В нижеприведенной программе я просто создаю пустой вектор, затем изменяю размер до 5 элементов, а затем до 8 элементов.Векторная емкость после изменения размера
Однако после изменения размера до 8 элементов емкость отображается как 10
. Почему емкость 10
, а не 8
после последнего изменения размера?
Ниже приведен код. Я прокомментировал, где проблема.
//This program has vector method resize()
//2015-12-05 Sat 12:06 AM
using namespace std;
#include<iostream>
#include<vector>
int main()
{
vector<int> vec1;
//Initial empty vector
cout << "Printing what an empty vector has..." << endl;
cout << "Size: " << vec1.size() << endl;
cout << "Capacity: " << vec1.capacity() << endl;
cout << endl << endl;
//Resize to 5, without giving any value.
cout << "Printing after resizing to 5 elements..." << endl;
vec1.resize(5);
cout << "Size: " << vec1.size() << endl;
cout << "Capacity: " << vec1.capacity() << endl;
cout << endl << endl;
//Resize to 8, with value also this time
//ISSUE HERE, WHY IS CAPACITY PRINTED AS '10', instead of '8'
cout << "Printing after resizing to 8, and also giving values..." << endl;
vec1.resize(8, 15);
cout << "Size: " << vec1.size() << endl;
cout << "Capacity: " << vec1.capacity() << endl;
cout << endl;
return 0;
}
Ниже выход:
user $ ./a.out
Printing what an empty vector has...
Size: 0
Capacity: 0
Elements:
Printing after resizing to 5 elements...
Size: 5
Capacity: 5
Elements: 0 0 0 0 0
Printing after resizing to 8, and also giving values...
Size: 8
Capacity: 10
Elements: 0 0 0 0 0 15 15 15
user $
'size' - количество элементов. «Емкость» - это количество элементов, которые она может хранить перед перераспределением. –
http://stackoverflow.com/questions/6296945/size-vs-capacity-of-a-vector – wizurd