Размер - количество элементов, присутствующих в векторе
Емкость - количество пространства, которое вектор использует в настоящее время.
Давайтепонять это на очень простом примере:
using namespace std;
int main(){
vector<int > vec;
vec.push_back(1);
vec.push_back(1);
vec.push_back(1);
cout<<"size of vector"<<vec.size()<<endl;
cout<<"capacity of vector"<<vec.capacity()<<endl;
return 0;
}
в настоящее время размер равен 3, а емкость равна 4.
Теперь, если мы отодвинем еще один элемент,
using namespace std;
int main(){
vector<int> vec;
vec.push_back(1);
vec.push_back(1);
vec.push_back(1);
vec.push_back(1);
cout<<"size of vector"<<vec.size()<<endl;
cout<<"capacity of vector"<<vec.capacity()<<endl;
return 0;
}
теперь размер: 4 емкость равна 4
теперь, если мы попытаемся вставить еще один элемент в vector
, тогда размер станет 5, а емкость станет 8.
это происходит в зависимости от типа данныхvector
, как здесь, в данном случае vector
в типе int
, как мы знаем, размер int
равен 4 байта, поэтому компилятор выделит 4 блока памяти .. и когда мы попытаемся добавить 5-й элемент,vector::capacity()
вдвое больше, чем у нас в настоящее время.
То же, продолжайте .. например: если мы попытаемся вставить 9-й элемент, то размер vector
будет равен 9, а емкость будет равна 16 ..