Подтвердить что ты не робот

Размер и емкость вектора?

Я немного смущен, и оба они выглядят одинаково для меня. Хотя может случиться, что емкость и размер могут отличаться для разных компиляторов. как он может отличаться. Он также сказал, что если мы потеряли память, емкость изменяется.

Все это немного неясно мне.

Может кто-нибудь дать объяснение. (если возможно, с примером или, если я могу сделать любой тест для любой программы, чтобы понять это)

4b9b3361

Ответ 1

Размер не может различаться между несколькими компиляторами. Размер вектора - это количество содержащихся в нем элементов, которое напрямую контролируется количеством элементов, которые вы помещаете в вектор.

Емкость - это объем пространства, которое вектор использует в настоящее время. Под капотом вектор просто использует массив. Емкость вектора - это размер этого массива. Это всегда равно или больше размера. Разница между ними - это количество элементов, которые вы можете добавить к вектору, прежде чем массив под капотом нужно перераспределить.

Вы почти никогда не должны заботиться о емкости. Он существует, чтобы люди с очень специфическими ограничениями производительности и памяти выполняли именно то, что им нужно.

Ответ 2

Размер: количество элементов, находящихся в данный момент в векторе

Емкость: сколько элементов может быть помещено в вектор до того, как оно будет "полным". После полного добавления новых элементов будет выделен новый, более крупный блок памяти, и существующие элементы будут скопированы на него

Ответ 3

Скажем, у вас есть ведро. В лучшем случае это ведро может содержать 5 галлонов воды, поэтому его емкость составляет 5 галлонов. Он может содержать любое количество воды от 0 до 5 включительно. Количество воды, в настоящее время в ковше, в векторном выражении составляет его размер. Поэтому, если это ведро заполнено наполовину, оно имеет размер 2,5 галлона.

Если вы попытаетесь добавить больше воды в ведро, и это переполнится, вам нужно найти большее ведро. Таким образом, вы получаете ведро с большей емкостью и сбрасываете содержимое старого ковша в новое, а затем добавляете новую воду.

Емкость: Максимальное количество материала, которое может содержать вектор/ведро. Размер: количество материала в настоящее время в Vector/bucket.

Ответ 4

size() указывает, сколько у вас элементов. capacity() сообщает вам, как большой размер может получить, прежде чем вектор должен перераспределить память для себя.

Емкость всегда больше или равна размеру. Вы не можете индексировать за элементом # size()-1.

Ответ 5

Размер - это количество элементов в векторе. Емкость - это максимальное количество элементов, которые вектор может удерживать в текущий момент.

Ответ 6

Размер - количество элементов, присутствующих в векторе

Емкость - это количество пространства, которое вектор использует в настоящее время.

Поймите это с помощью очень простого примера:

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 in типа int, так как мы знаем, что размер int равен 4 байтам, поэтому компилятор выделит 4 блока памяти. и когда мы пытаемся добавить 5-й элемент, vector::capacity() удваивает то, что у нас есть.

так же продолжайте... например: если мы попытаемся вставить девятый элемент, тогда размер vector будет равен 9, а емкость будет 16...