关于C++中Vector的一些问题

各位好,如下代码运行正常,但是一旦我将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,