首页 文章

C矢量:为什么这段代码不起作用?

提问于
浏览
0
vector< vector< vector<int> > > myArray(5, vector< vector<int> >(4));
vector<int> testArray();
myArray[0][0].push_back(testArray);

我不明白 . 我只是想为它添加一个新元素 .

编辑:第二行是错误的,但仍然无法编译 .

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector< vector< vector<int> > > myArray(5, vector< vector<int> >(4));
    vector<int> testArray;
    myArray[0][0].push_back(testArray);
    return 0;
}

编译错误:

pnt.cpp:在函数'int main()'中:pnt.cpp:8:错误:没有用于调用'std :: vector> :: push_back(std :: vector>&)'/ usr / include /的匹配函数c /4.4/bits/stl_vector.h:733:注意:候选者是:void std :: vector <_Tp,_Alloc> :: push_back(const _Tp&)[with _Tp = int,_Alloc = std :: allocator]

2 回答

  • 1
    vector<int> testArray();
    

    应该:

    vector<int> testArray;
    

    vector<int> testArray(); 是一个名为 testArray 的函数的前向声明,它返回 vector<int> .

    你也有一个间接层次:

    myArray[0].push_back(testArray);
    

    要么

    myArray[0][0] = testArray;
    
  • 8

    myArray是int矢量矢量矢量 . myArray [0]是int的向量向量 . 这是你需要push_back int的向量的地方,如下所示:

    std::vector< std::vector< std::vector<int> > > myArray(5, std::vector< std::vector<int> >(4));
    std::vector<int> testArray;
    myArray[0].push_back(testArray);
    return 0;
    

    使用myArray [0] [0],您将访问int的向量,而不是int向量的向量 .

相关问题