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

1 c++ arrays vector

vector< vector< vector<int> > > myArray(5, vector< vector<int> >(4));
vector<int> testArray();
myArray[0][0].push_back(testArray);
Run Code Online (Sandbox Code Playgroud)

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

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

#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;
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

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]

Eri*_*rik 8

vector<int> testArray();
Run Code Online (Sandbox Code Playgroud)

应该:

vector<int> testArray;
Run Code Online (Sandbox Code Playgroud)

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

你也有一个间接层次:

myArray[0].push_back(testArray);
Run Code Online (Sandbox Code Playgroud)

要么

myArray[0][0] = testArray;
Run Code Online (Sandbox Code Playgroud)

  • @cBMtb,在“[0][0]”级别,您想要插入“int”,而不是另一个向量。 (3认同)