Почему написано, что push_back не был объявлен? - PullRequest
3 голосов
/ 31 января 2011

Почему написано, что push_back не был объявлен?

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

Ответы [ 6 ]

14 голосов
/ 31 января 2011

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

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

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

2 голосов
/ 31 января 2011

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

v относится к типу Vector . v[0] - это НЕ вектор, скорее, это ссылка на первый элемент (который будет int).

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

2 голосов
/ 31 января 2011

используйте v.push_back(0), поскольку v[0] является int, а не vector.

2 голосов
/ 31 января 2011

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

2 голосов
/ 31 января 2011

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

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

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

2 голосов
/ 31 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...