各位好,如下代码运行正常,但是一旦我将vector numberVector;
改为vector numberVector[10];后就编译错误,提示为push, empty
等is of non-class type of std::vector [10], 请问这是什么原因?
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> numberVector;
//numberVector编译运行正常,若改为numberVector[10]则报错。
numberVector.push_back(1);
numberVector.push_back(10);
numberVector.push_back(100);
numberVector.push_back(1000);
cout << numberVector.size() << endl;
cout << numberVector.empty() << endl;
cout << numberVector.max_size() << endl;
cout << numberVector.capacity() << endl;
for (int i=0;i<numberVector.size();i++)
cout<<numberVector.at(i)<<endl;
return 0;
}
vector numberVector[10],是个数组,对数组而言,没有push、empty的接口。如果你想初始化为大小为10的向量,使用vector numberVector(10)
#include < iostream >
#include < vector >
using namespace std;
int main()
{
vector< int > numberVector2[10];
vector< int > numberVector = numberVector2[0]; // vector 和 vector[10]之间的关系
numberVector.push_back(1);
numberVector.push_back(10);
numberVector.push_back(100);
numberVector.push_back(1000);
cout << numberVector.size() << endl;
cout << numberVector.empty() << endl;
cout << numberVector.max_size() << endl;
cout << numberVector.capacity() << endl;
for (int i=0;i<numberVector.size();i++)
cout<<numberVector.at(i)<<endl;
return 0;
}
vector numberVector;//这样的定义,定义了一个vector 对象,这个vector对象numberVector中存的是int型数据。
vector numberVector[20];//这样定义了一个数组,而数组的元素是vector对象,每一个vector对象存的都是int型数据。
所以,对于vector数组,可以使用numberVector[0].pushback(1);操作。
你思考一下,int a 和int b[10]有啥区别呢,他们是不相同的,一个是容器,一个是容中存放的数据类型,也就是说a可以存放1,但b不可以存放1,但b[0]可以存放1。
现在说说你那个,现在numberVector你把它当成一个int值,这个int值可以push_back ,但如果是numberVector[10],他和前面提到的不是相同的,他是个存放vector类型的容器,他就不能push_back
所以你在使用的时候应该是numberVector[0].push_back,