В C ++ массив - это просто указатель на непрерывный блок данных - серию элементов.Он не предлагает встроенных методов или более высокой функциональности.
int intArr[] = {0,1,2,3};
- это то же самое, что и
int *intArr = (int *)malloc(4*sizeof(int));
for(int i = 0; i < 4; i++) { intArr[i] = i; }
. Вектор (std :: vector), с другой стороны, являетсяКонтейнер для элементов (в основном, как массив), который также предлагает дополнительные встроенные методы (см .: http://www.cplusplus.com/reference/stl/vector/), такие как
vector<int> intArr;
for(int i = 0; i < 4; i++) { intArr.push_back(i); }
// this yields the same content; i.e. intArr = {0,1,2,3}
И массивы, и векторы могут использоваться в объектах любого типа, int, double, MySpacePirateWizardClass и т. д. Большим бонусом векторов является дополнительная функциональность от встроенных функций, таких как:
int arrSize = intArr.size(); // vector also includes useful information
int *firstElement = intArr.begin(); // methods for creating pointers to elements
intArr.delete(0); // modify elements
intArr.insert(0, 2); // modify vector
// now: intArr = {2,1,2,3}
и т. д. и т. д.
Когда я знаю, что не пойдучтобы не хватать места (или рассматривать огромные объемы данных), я всегда использую векторы, потому что они более удобны (даже достаточным аргументом является только метод size ()).