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

Найденное решение, попробуйте:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>
29
задан munish 9 June 2011 в 17:35
поделиться

6 ответов

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

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

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

59
ответ дан John Calsbeek 9 June 2011 в 17:35
поделиться

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

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

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

23
ответ дан Coeffect 9 June 2011 в 17:35
поделиться

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

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

6
ответ дан Oliver Charlesworth 9 June 2011 в 17:35
поделиться

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

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

25
ответ дан Kent Boogaart 9 June 2011 в 17:35
поделиться

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

5
ответ дан Pete 9 June 2011 в 17:35
поделиться

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

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

Давайте разберемся с этим на простом примере:

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, а емкость b 16 ..

5
ответ дан sanjeev 9 June 2011 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: