C++ C++;向量:为什么这段代码不起作用? vectormyArray(5,vector(4)); 向量testArray(); myArray[0][0]。推回(testArray);

C++ C++;向量:为什么这段代码不起作用? vectormyArray(5,vector(4)); 向量testArray(); myArray[0][0]。推回(testArray);,c++,arrays,vector,C++,Arrays,Vector,我不明白。我只是想给它添加一个新元素 编辑:第二行错误,但仍然无法编译 vector< vector< vector<int> > > myArray(5, vector< vector<int> >(4)); vector<int> testArray(); myArray[0][0].push_back(testArray); #包括 #包括 使用名称空间std; int main(){ 向量myArray(5,向量(

我不明白。我只是想给它添加一个新元素

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

vector< vector< vector<int> > > myArray(5, vector< vector<int> >(4));
vector<int> testArray();
myArray[0][0].push_back(testArray);
#包括
#包括
使用名称空间std;
int main(){
向量>myArray(5,向量(4));
矢量测试阵列;
myArray[0][0]。推回(testArray);
返回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::push_back(const\u Tp&)[带_Tp=int,_Alloc=std::allocator]

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


myArray是int向量的向量。myArray[0]是int向量的向量。这是您需要向后推int向量的地方,如下所示:

myArray[0][0] = testArray;
std::vector>myArray(5,std::vector(4));
std::向量测试阵列;
myArray[0]。推回(testArray);
返回0;

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

myArray是int向量的向量。myArray[0]是int向量的向量。这是您需要向后推int向量的地方,如下所示:

myArray[0][0] = testArray;
std::vector>myArray(5,std::vector(4));
std::向量测试阵列;
myArray[0]。推回(testArray);
返回0;

使用myArray[0][0]可以访问int向量,而不是int向量。

我不知道有什么更好的方法。我正在移植一些Python代码,因为它效率低下。这是我所能想到的最快的方法,看起来仍然有些干净。你看到了什么错误?这是编译错误还是运行时问题?我不知道有什么更好的方法。我正在移植一些Python代码,因为它效率低下。这是我所能想到的最快的方法,看起来仍然有些干净。你看到了什么错误?这是编译错误还是运行时问题?@cBMtb然后您需要用准确的错误消息更新您的问题。Erik的回答修复了代码中的一个错误。很难看出是否还有更多。等等,我有一个矩阵,每个元素有一个向量。当我想将元素放入[0][0]向量中时,为什么我要使用myArray[0]而不是myArray[0][0]。@cBMtb,在
[0][0]
级别,您希望插入
int
s,而不是另一个向量。@cBMtb然后您需要用准确的错误消息更新您的问题。Erik的回答修复了代码中的一个错误。很难看出是否还有更多。等等,我有一个矩阵,每个元素有一个向量。当我要将元素放入[0][0]向量中时,为什么要使用myArray[0]而不是myArray[0][0]?@cBMtb,在
[0][0]
级别,您要插入
int
s,而不是另一个向量。
myArray[0].push_back(testArray);
myArray[0][0] = testArray;
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;