m0_37990833
houdiniZ
采纳率0%
2019-02-03 00:40

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

5

各位好,如下代码运行正常,但是一旦我将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;
 }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • u011683608 蒋金多多 2年前

    vector numberVector[10],是个数组,对数组而言,没有push、empty的接口。如果你想初始化为大小为10的向量,使用vector numberVector(10)

    点赞 2 评论 复制链接分享
  • xx1959590935 爱吃小泉的拉面同学 2年前

    啦啦啦

    你思考一下,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,

    点赞 评论 复制链接分享
  • yancola 严珂 2年前

    vector numberVector;//这样的定义,定义了一个vector 对象,这个vector对象numberVector中存的是int型数据。
    vector numberVector[20];//这样定义了一个数组,而数组的元素是vector对象,每一个vector对象存的都是int型数据。

    所以,对于vector数组,可以使用numberVector[0].pushback(1);操作。

    点赞 评论 复制链接分享
  • Jarrylogin Jarrylogin 2年前

    #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;
    

    }

    点赞 评论 复制链接分享