为什么说'push_back'还没有被宣布?

时间:2011-01-31 06:23:16

标签: c++ stl vector

为什么说'push_back'尚未宣布?

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

6 个答案:

答案 0 :(得分:14)

v[0]是对vector中初始元素的引用;它不是vector本身。该元素的类型为int,它不是类类型对象,因此没有成员函数。

您在寻找v.push_back(0);吗?

请注意,vector<int> v(30);会在其中创建包含30个元素的vector,每个元素的值为零。调用v.push_back(0);会将vector的大小增加到31.这可能是也可能不是您想要的行为;如果不是,你需要澄清你正在尝试做什么。

答案 1 :(得分:2)

您需要执行v.push_back(0)因为push_back是向量的方法而不是其元素。

答案 2 :(得分:2)

试试这个:

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

问题是v [0]是vector中的第一个元素,它是一个int。向量的名称是v。

答案 3 :(得分:2)

只需使用v.push_back(0);你必须将push_back转换为向量。不是矢量的特定元素。

答案 4 :(得分:2)

使用v.push_back(0),因为v[0]int,而不是vector

答案 5 :(得分:2)

你的错误类型。

v的类型为 Vector v[0] NOT 是一个向量,而是对第一个元素(将是int)的引用。

因此,v[0]没有push_back方法 只有向量本身(v)才有方法。