Понаписали то. Дневной запас энергии у человека ограничен. Лучше бы эту энергию потратили на создание какого-нибудь полезного приложения, выручили кого-то, заработали денег или\и зарядку сделали (а то уж глаза наверное устали, на форумах столько сидеть) А негативные эмоции вообще разрушают, приводят к болезням
Надо спорить конструктивно. Если понял, что был не прав лучше обрадоваться, что наконец-то понял. Так и поступаю
C++, с точки зрения разработчика приложений, развивается по такому пути:
1) Писать как можно быстрее. Чем быстрее фирма отдаст проект заказчику (на рынок), тем больше она денег заработает
2) Обезопасить себя. Раньше программисту приходилось писать new и delete, потом придумали идиому RAII, теперь есть std::make_shared и std::make_unique. Теперь можно вообще не писать new и delete и освободить себя и от лишней головной боли, так как оператор delete опасен тем, что:
- можно забыть его написать
- можно написать его два раза
- можно попытаться использовать объект после delete
3) Для стандартных задач применять стандартные решения. Теперь можно комбинировать стандартные алгоритмы, контейнеры, лямбды, функторы, итераторы, регулярные выражения и т.д. решая 99% стандартных задач стандартным образом. Тем самым: уменьшаем время разработки, уменьшаем количество ошибок, программисты лучше понимают друг друга, когда видят перед собой стандартные решения
Нужно идти в ногу со временем
Чем быстрее заказчик получит своё приложение, тем быстрее фирма может перейти к выполнению следующего заказа, тем больше фирма заработает за определённое время (например, за год) Все становятся счастливее и довольнее
По поводу std::vector и статического (динамического) массива - ничего хоть сколько-нибудь убедительного не увидел. Не люблю пустословия. Давайте на конкретных примерах и конкретных задачах
Возьмём какую-нибудь простейшую задачу и на ней потестим. Допустим задача у приложения такая: получить от пользователя размер массива данных, отсортировать массив в обратном направлении, отдать результат (для упрощения - покажем на экран массив до сортировки и массив после сортировки)
Вот как я решил эту задачу с использованием стандартных средств C++11:
C++ (Qt)
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <iterator>
template <typename Type>
std::vector<Type> getArrya( std::size_t n );
template <typename Type>
void showArray( const std::vector<Type> &arr );
int main()
{
// Get size
std::cout << "Enter a size for the array: ";
size_t n;
std::cin >> n;
// Get array
std::vector<int> arr;
arr = getArrya<int>( n );
// Before
std::cout << "Before: " << std::endl;
showArray( arr );
// Sort
std::sort( arr.begin(), arr.end(), []( int i , int j ) { return i > j; } );
// After
std::cout << "After: " << std::endl;
showArray( arr );
std::cout << std::endl;
return 0;
}
template <typename Type>
std::vector<Type> getArrya( std::size_t n )
{
std::vector<int> arr( n );
std::srand( std::time( NULL ) );
std::transform( arr.begin(), arr.end(), arr.begin(),
[]( Type i ) { return std::rand() % 100; } );
return arr;
}
template <typename Type>
void showArray( const std::vector<Type> &arr )
{
std::copy( arr.begin(), arr.end(),
std::ostream_iterator<Type>( std::cout, " " ) );
std::cout << std::endl;
}
Приведите аналог моего решения с использованием динамического массива, измерьте время и покажите насколько ваше решение быстрее моего. Только укажите характеристики своего компьютера. Сравним ещё по количеству строк кода и по сложным местам, где можно было совершить ошибку (то есть по сложности)
Либо приведите свою задачу решённую с помощью статического (динамического) массива. А я решу её с помощью std::vector. И возможно мы наглядно увидим, что использование статического (динамического) массива оказалось быстрее std::vector. Настолько быстрее, что заказчик смог это заметить
Приведите несколько ситуаций, где возможно только применение статического (динамического) массива и ни в коем случае нельзя применять std::vector
Я уверен, что в 99% случаев можно обойтись в своих приложениях std::vector (ну или другим контейнером). А использовать статические (динамические) массивы только в самых крайних случаях. Я бы хотел, чтобы каждый перечислил все известные ему случаи. Буду очень рад! Спасибо!