О росте векторов

Проходило Книгу: Учебник по C ++, третье издание Автор: Стэнли Б. Липпман, Хосе Лажуа

На данный момент обнаружена 1 ошибка. ... В программе, приведенной в Статье 6.3 Как растет сам вектор, эта Программа пропускает знак "<" в знаках !! Данная программа выглядит так:

#include <vector>
#include <iostream>

int main(){
vector< int > ivec;
cout < "ivec: size: " < ivec.size()
< " capacity: "  < ivec.capacity() < endl;

for ( int ix = 0; ix < 24; ++ix ) {
ivec.push_back( ix );
cout < "ivec: size: " < ivec.size()
< " capacity: "  < ivec.capacity() < endl;
}    
}

Теперь я исправил проблему. Далее в этой статье в книге говорится следующее: «В реализации Rogue Wave размер и емкость ivec после его определения равны 0. Однако при вставке первого элемента емкость ivec равна 256, а его размер равен 1».

Но при исправлении и запуске code Я получаю следующий результат:


ivec: size: 0 capacity: 0
ivec[0]=0 ivec: size: 1 capacity: 1
ivec[1]=1 ivec: size: 2 capacity: 2
ivec[2]=2 ivec: size: 3 capacity: 4
ivec[3]=3 ivec: size: 4 capacity: 4
ivec[4]=4 ivec: size: 5 capacity: 8
ivec[5]=5 ivec: size: 6 capacity: 8
ivec[6]=6 ivec: size: 7 capacity: 8
ivec[7]=7 ivec: size: 8 capacity: 8
ivec[8]=8 ivec: size: 9 capacity: 16
ivec[9]=9 ivec: size: 10 capacity: 16
ivec[10]=10 ivec: size: 11 capacity: 16
ivec[11]=11 ivec: size: 12 capacity: 16
ivec[12]=12 ivec: size: 13 capacity: 16
ivec[13]=13 ivec: size: 14 capacity: 16
ivec[14]=14 ivec: size: 15 capacity: 16
ivec[15]=15 ivec: size: 16 capacity: 16
ivec[16]=16 ivec: size: 17 capacity: 32
ivec[17]=17 ivec: size: 18 capacity: 32
ivec[18]=18 ivec: size: 19 capacity: 32
ivec[19]=19 ivec: size: 20 capacity: 32
ivec[20]=20 ivec: size: 21 capacity: 32
ivec[21]=21 ivec: size: 22 capacity: 32
ivec[22]=22 ivec: size: 23 capacity: 32
ivec[23]=23 ivec: size: 24 capacity: 32

Следовательно, начальная емкость увеличивается по формуле 2 ^ N, не так ли ?? Где N - начальная емкость. Пожалуйста, объясните.

22
задан Sadique 23 April 2011 в 06:49
поделиться