2016-01-12 4 views
-5

Я инициализирую вектор, используя этот код ниже произошла ошибка.Как инициализировать вектор?

vector<int> e; 

for(int i=0;i<10;i+) 
{ 
e[i] = 0; 
} 
+7

[ 'e.push_back (some_data);'] (http://en.cppreference.com/w/cpp/container/vector/push_back) - в «векторе» ничего нет, так что вы не можете пытаться получить к нему доступ с помощью '[]'. – BoBTFish

+4

'vector e (10, 0);' - инициализировать вектор с 10 элементами со значением 0. – nils

ответ

1

Достаточно написать

std::vector<int> e(10); 

, если вы хотите, чтобы каждый элемент был равен нулю.

В противном случае вы можете написать

std::vector<int> e(10, value); 

Если у вас есть вектор типа std::vector<T> затем декларации

std::vector<T> v(n); 

эквивалентно

std::vector<T> v(n, T()); 
2

Как BoBTFish уже сказал, что вы не можете элементы доступа вектора с [], поскольку в векторе ничего нет. У вас есть несколько вариантов, как это сделать.

a. используйте push_back вместо «=», это будет выглядеть как

vector<int> e; 
for (i = 0; i < 10 ; i++) 
    e.push_back(0); 

b. инициализировать и пустить вектор, подобный этому

vector<int> e(10); 
for (i = 0; i < 10 ; i++) 
    e[i] = 0; 

c. Инициализировать вектор размера 10, заполненный 0s как этого

vector<int> e(10,0); 
+0

Что делает push_back? – Jonel

+0

Он в основном добавляет элемент в конец вашего вектора. Он увеличивает размер вектора на единицу и присваивает ваше заданное значение новому созданному последнему элементу. –

Смежные вопросы