2011-01-31 3 views
3

Почему он говорит, что «push_back» не был объявлен?Почему он говорит, что «push_back» не был объявлен?

#include <iostream> 
#include <vector> 
using namespace std; 
int main() 
{ 
    vector <int> v(30); 
    v[0].push_back(0); 
return 0; 
} 
+1

Просьба предоставить полное точное сообщение об ошибке, включая любые номера строк, на которые оно ссылается. – abelenky

ответ

14

v[0] является ссылкой на начальный элемент в vector; это не самый vector. Элемент имеет тип int, который не является объектом типа класса и поэтому не имеет функций-членов.

Вы ищете v.push_back(0);?

Обратите внимание, что vector<int> v(30); создает vector с 30 элементами в нем, каждый со значением нуля. Вызов v.push_back(0); увеличит размер vector до 31. Это может быть или не быть поведением, которое вы хотите; если это не так, вам нужно уточнить, что именно вы пытаетесь сделать.

+0

Спасибо. Теперь я понимаю. – Rashid

2

Вам необходимо сделать v.push_back(0) как push_back - это метод вектора, а не его элемент.

2

Попробуйте это:

#include <iostream> 
#include <vector> 
using namespace std; 
int main() 
{ 
    vector <int> v(30); 
    v.push_back(0); 
    return 0; 
} 

Проблема заключается в том, что v [0] является первым элементом вектора, который является Int. Имя вектора v.

2

Просто используйте v.push_back(0); Вы должны нажать_back в вектор. Не в конкретный элемент вектора.

2

У вас неправильный тип.

v имеет тип Вектор. v[0] is NOT вектор, скорее, это ссылка на первый элемент (который будет int).

В результате v[0] не имеет метода push_back.
Только сам вектор (v) имеет метод.

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