C ++ Vectors:为什么这段代码不起作用?

时间:2011-03-28 17:56:29

标签: c++ arrays vector

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&gt; :: push_back(std :: vector&gt;&amp;)' /usr/include/c++/4.4/bits/stl_vector.h:733:注意:候选者是:void std :: vector&lt; _Tp,_Alloc&gt; :: push_back(const _Tp&amp;)[with _Tp = int,_Alloc = std: :分配器]

2 个答案:

答案 0 :(得分:8)

vector<int> testArray();

应该是:

vector<int> testArray;

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

你也有一个间接层次:

myArray[0].push_back(testArray);

myArray[0][0] = testArray;

答案 1 :(得分:1)

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的向量向量。