C++ 向量
亲爱的各位, 我使用了向量的向量,比如向量no_1_2来存储两个向量容器的元素,比如no1和no2。例如,我会说,no1={2,5,7,10,3}和no2={21,34,15} 我想将这两个向量存储在一个名为no_1_2的容器中,我使用了no_1_2[0]。push_backno1.ati和no_1_2[1]。push_backno2.atj在两个“for”循环中。但是,我错了。有没有办法解决这个问题 我不能推回向量的向量吗?请帮忙。。 谢谢 抱歉,这是我的部分代码, //这里有一些类和代码C++ 向量,c++,C++,亲爱的各位, 我使用了向量的向量,比如向量no_1_2来存储两个向量容器的元素,比如no1和no2。例如,我会说,no1={2,5,7,10,3}和no2={21,34,15} 我想将这两个向量存储在一个名为no_1_2的容器中,我使用了no_1_2[0]。push_backno1.ati和no_1_2[1]。push_backno2.atj在两个“for”循环中。但是,我错了。有没有办法解决这个问题 我不能推回向量的向量吗?请帮忙。。 谢谢 抱歉,这是我的部分代码, //这里有一些类和代码 v
vector< vector<int> > final_list(int code1,int code2){
vector<vector<int> > no_1_2;
vector<int> in;
vector<int> out;
for (int foo=0;foo<size();foo++){
int a_point=foo;
if (at(a_point).Code()==code1){
vector<int> closer_points;
closer_points=at(foo).Closers();
for (int fee=0;fee<closer_points.size();fee++){
int a_neb_point=closer_points.at(fee);
if (at(a_neb_point).Code()==code2){
in.push_back(a_point);
out.push_back(a_neb_point);
}
}
}
}
/remove duplicates // above in and out vectors containing some values repeatedly, so, i remove the duplicates here
for(vector<int>::iterator i=in.begin();i!=in.end();i++){
sort(in.begin(),in.end());
in.erase(unique(in.begin(),in.end()),in.end());
no_1_2[0].push_back(*i);
}
for(vector<int>::iterator o=out.begin();o!=out.end();o++){
sort(out.begin(),out.end());
out.erase(unique(out.begin(),out.end()),out.end());
no_1_2[1].push_back(*o);
}
return no_1_2;
}
int main (){
// some code
vector< vector <int> > in_out=mylist.final_list(34,1); //here i just tried for code values for (34, 1), like that i have many sets
}
在没有看到您的实际代码和错误的情况下,让我猜猜: 在访问no_1_2[0]或no_1_2[1]之前,您没有调用no_1_2.resize2 编辑:在看到代码后,以上不再是猜测: 无法执行no_1_2[0]。请将_向后推*i;-no_1_2为空,您正在尝试访问no_1_2[0]。在循环之前,需要调整其大小 编辑2: 将排序/唯一/擦除移到循环之外,并使用assign或operator=:
sort(in.begin(),in.end());
in.erase(unique(in.begin(),in.end()),in.end());
no_1_2[0].assign(in.begin(), in.end());
// OR: no_1_2[0] = in;
在没有看到您的实际代码和错误的情况下,让我猜猜: 在访问no_1_2[0]或no_1_2[1]之前,您没有调用no_1_2.resize2 编辑:在看到代码后,以上不再是猜测: 无法执行no_1_2[0]。请将_向后推*i;-no_1_2为空,您正在尝试访问no_1_2[0]。在循环之前,需要调整其大小 编辑2: 将排序/唯一/擦除移到循环之外,并使用assign或operator=:
sort(in.begin(),in.end());
in.erase(unique(in.begin(),in.end()),in.end());
no_1_2[0].assign(in.begin(), in.end());
// OR: no_1_2[0] = in;
我假设你没有正确分配向量
vector< vector<int> > vectors;
vectors.resize(2);
FWIW,你不是在做向量的推回,你是在做从向量no2到向量nou1的int的推回[1] 我假设您没有正确分配向量
vector< vector<int> > vectors;
vectors.resize(2);
FWIW,你不是在做向量的推回,你是在做从向量no2到向量nou1的int的推回[1] std::vector::at返回对向量中位置n处元素的引用
std::vector<int> vec(2);
vec[0] = 0;
vec[1] = 1;
cout << vec.at(0) ; // returns 0 but not the vector.
否\u 1\u 2[0]。将\u向后推*i;,否_1_2[1]。将_向后推*o;这些都是错误。您需要调整向量大小,因为在no_1_2、in、out声明时,没有提到容器的大小
vector<vector<int>> no_1_2 ;
vector<int> in;
vector<int> out;
std::vector::at返回对向量中位置n处元素的引用
std::vector<int> vec(2);
vec[0] = 0;
vec[1] = 1;
cout << vec.at(0) ; // returns 0 but not the vector.
否\u 1\u 2[0]。将\u向后推*i;,否_1_2[1]。将_向后推*o;这些都是错误。您需要调整向量大小,因为在no_1_2、in、out声明时,没有提到容器的大小
vector<vector<int>> no_1_2 ;
vector<int> in;
vector<int> out;
另外,在编辑答案时复制粘贴代码也不会花太长时间。最近有很多这样的事情-用英语而不是代码发布了一些解释。要删除重复项-std::unique有什么问题吗?还有,在编辑答案时复制粘贴代码应该不会花太长时间。最近有很多这样的事情-用英语而不是代码发布了一些释义。要删除重复项-std::unique有什么问题?@Erik-感谢您的更正。OP应该将你的答案标记为已接受而不是我的:@Mahesh:no_1_2是一个向量-no_1_2[0]是一个向量vector@Mahesh:太好了:如果你修改了你的答案,使被接受的答案是正确的,我将删除我的评论。艾瑞克和马赫什,非常感谢你。我是C++新手。所以,我需要你所有的评论。因此,请保留所有评论。因此,特别感谢埃里克的合作。:-@埃里克,再次谢谢你。现在使用resize命令和assign修复了错误,现在我的代码变得更短了。thanks@Erik-谢谢你的更正。OP应该将你的答案标记为已接受而不是我的:@Mahesh:no_1_2是一个向量-no_1_2[0]是一个向量vector@Mahesh:太好了:如果你修改了你的答案,使被接受的答案是正确的,我将删除我的评论。艾瑞克和马赫什,非常感谢你。我是C++新手。所以,我需要你所有的评论。因此,请保留所有评论。因此,特别感谢埃里克的合作。:-@埃里克,再次谢谢你。现在使用resize命令和assign修复了错误,现在我的代码变得更短了。thanks@Erik-我只是提供了std::vector::at的示例,在我发布它时,OP已经更新了这个问题。无论如何,谢谢你指出我犯的错误。@Erik-我只是提供了std::vector::at的例子,在我发布它的时候,OP已经更新了这个问题。不管怎样,谢谢你指出我犯的错误。