В C++ рекомендуется вместо массивов использовать ``vector``.
Плюсы:
* размер -- это часть вектора (в С для размера используемой части нужна дополнительная переменная)
* можно изменить размер в любой момент (в С размер нельзя изменять после определения)
* есть присваивание (в С используем memcpy)
* есть метод, проверяющий корректность индекса при обращении к элементу (в С пишем проверку вручную)
* есть методы, упрощающие действия над вектором (в С используем последовательность вызовов memmove)
Определение вектора:
```c++
vector<int> a; // 0 элементов
vector<double> b(10); // 10 элементов
vector<double> с(10, 0.0); // 10 элементов, начальное значение 0
vector<int> d{5, 10, 7}; // 3 элемента, начальное значение 5, 10, 7
```
Действия с векторами:
```c++
int n=b.size(); // текущий размер
// доступ к элементам
b[0]=c[4]; // без проверки
b.at(0)=c.at(4); // с проверкой выхода за границы
с.back()=b.front(); // последний и первый элементы
a=d; // присваивание
for(int i=0;i<a.size();++i)
a[i]+=2; // обработка элементов вектора
// изменение размера
a.resize(100); // до 100 элементов
a.clear(); // опять 0 элементов
b.resize(20,2.0); // до 20 элементов, всем новым элементам присвоить 2.0
c.push_back(1.5); // добавить новое значение в конец
c.pop_back(); // удалить последнее значение
// вставка в середину:
с.insert(c.begin()+pos,1.5); // одно значение
с.insert(c.begin()+pos,5,1.5); // 5 значений
с.insert(c.begin()+pos,b.begin(),b.end()); // из другого вектора
// удаление из середины:
c.erase(c.begin()+pos); // одно значение
c.erase(c.begin()+pos,c.end());// все элементы с pos до конца
```