Найденное решение, попробуйте:
<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>
Размер не допускается для разных компиляторов. Размер вектора - это количество содержащихся в нем элементов, которое напрямую зависит от того, сколько элементов вы поместили в вектор.
Capacity - это объем пространства, которое вектор использует в настоящее время. Под капотом вектор просто использует массив. Емкость вектора - это размер этого массива. Это всегда равно или больше, чем размер. Разница между ними заключается в количестве элементов, которые вы можете добавить к вектору до того, как необходимо перераспределить массив под капотом.
Вы почти никогда не должны заботиться о способности. Он существует, чтобы позволить людям с очень специфической производительностью и ограничениями памяти делать именно то, что они хотят.
Допустим, у вас есть ведро. Самое большее, это ведро может вместить 5 галлонов воды, поэтому его вместимость составляет 5 галлонов. В нем может быть любое количество воды от 0 до 5 включительно. Количество воды, находящейся в настоящее время в ведре, в векторном выражении равно его размеру. Так что, если это ведро наполовину заполнено, оно имеет размер 2,5 галлона.
Если вы попытаетесь добавить больше воды в ведро, и оно переполнится, вам нужно найти ведро большего размера. Таким образом, вы получаете ведро с большей емкостью и выливаете содержимое старого ведра в новое, а затем добавляете новую воду.
Вместимость: максимальное количество вещей, которое может вместить Вектор / ведро. Размер: количество материала в настоящее время в векторе / корзине.
size()
говорит вам, сколько элементов у вас в данный момент. capacity()
говорит вам, насколько большим может быть размер, прежде чем вектор должен перераспределить память для себя.
Емкость всегда больше или равна размеру. Вы не можете индексировать дальше элемента # size()-1
.
Размер : количество элементов, находящихся в настоящее время в векторе
Емкость : сколько элементов может быть помещено в вектор, прежде чем он «заполнится». После заполнения добавление новых элементов приведет к выделению нового, большего блока памяти и копированию в него существующих элементов
Размер - это количество элементов в векторе. Емкость - это максимальное количество элементов, которые вектор может в настоящее время содержать.
Размер - это количество элементов, присутствующих в векторе
Емкость - это объем пространства, которое вектор использует в настоящее время.
Давайте разберемся с этим на простом примере:
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 ..