C++ 使用向量向量,将整数向后推不适用于Mac OS X
我将MacBook Air与eclipse一起使用,我声明了一个向量向量,并尝试将一些整数推回,但我得到以下错误:C++ 使用向量向量,将整数向后推不适用于Mac OS X,c++,vector,C++,Vector,我将MacBook Air与eclipse一起使用,我声明了一个向量向量,并尝试将一些整数推回,但我得到以下错误: ../main.cpp:31:17: error: expected expression base.push_back({ 0,3,4 }); ^ ../main.cpp:32:17: error: expected expression base.push_back({ 1,2} );
../main.cpp:31:17: error: expected expression
base.push_back({ 0,3,4 });
^
../main.cpp:32:17: error: expected expression
base.push_back({ 1,2} );
^
../main.cpp:33:17: error: expected expression
base.push_back({ 4,5} );
这是我的密码:
#include <iostream>
#include <vector>
void print_recurssion(std::vector<std::vector<int> > const &base, std::vector<int> &comb, size_t i = 0){
for (size_t j = 0; j < base[i].size(); j++){
comb[i] = base[i][j];
if(i < base.size() - 1)
print_recurssion(base, comb, i+1);
else{
for (size_t k = 0; k < comb.size(); k++)
std::cout << ((k==0) ? "" : "-") << comb[k];
std::cout << std::endl;
}
}
}
int main(){
std::vector<std::vector<int> > base;
std::vector<int> v1;
v1.push_back(0);
v1.push_back(3);
v1.push_back(4);
std::vector<int> v2;
v2.push_back(1);
v2.push_back(2);
std::vector<int> v3;
v1.push_back(4);
v1.push_back(5);
base.push_back(v1);
base.push_back(v2);
base.push_back(v3);
std::vector<int> comb(base.size());
print_recurssion(base,comb);
return 0;
}
#包括
#包括
无效打印递归(std::vector const&base,std::vector&comb,size\u t i=0){
对于(size_t j=0;j std::cout您可能没有C++11
std::vector<std::vector<int>> base;
base.push_back({ 0,3,4 });
std::向量基;
将_向后推({0,3,4});
试一试
std::向量基;
std::向量v1;
v1.推回(0);
v1.推回(3);
v1.推回(4);
基础。推回(v1);
编辑(完整代码)
#包括
#包括
无效打印递归(std::vector const&base,std::vector&comb,size\u t i=0){
对于(size_t j=0;j std::cout工作正常。你的工具链版本是什么,你如何称呼编译器?我使用MacBook Air的Eclipse,不确定你所说的工具链版本是什么意思。你是通过运行完全相同的代码得到错误的吗?是的,我得到了确切的错误。“/main.cpp:33:17:”同样,您确定这个错误来自这段代码吗?由于某种原因,当我运行它时,它不工作,让我更新代码now@Scooby你的代码不工作的原因是因为你把最后两个元素推到了v1.push_back(4);v1.push_back(5)
将矢量v1而不是v3。我将您的代码添加到答案中,并更正了错误。因此,您知道如何使其成为通用的,以便可以接受字符串和整数吗?这很可能需要不同的方法。我建议使用包含任务详细描述的新票据,因为还不太清楚预期的输出应该是什么像。
std::vector<std::vector<int>> base;
std::vector<int> v1;
v1.push_back(0);
v1.push_back(3);
v1.push_back(4);
base.push_back(v1);
#include <iostream>
#include <vector>
void print_recurssion(std::vector<std::vector<int> > const &base, std::vector<int> &comb, size_t i = 0){
for (size_t j = 0; j < base[i].size(); j++){
comb[i] = base[i][j];
if(i < base.size() - 1)
print_recurssion(base, comb, i+1);
else{
for (size_t k = 0; k < comb.size(); k++)
std::cout << ((k==0) ? "" : "-") << comb[k];
std::cout << std::endl;
}
}
}
int main(){
std::vector<std::vector<int> > base;
std::vector<int> v1;
v1.push_back(0);
v1.push_back(3);
v1.push_back(4);
std::vector<int> v2;
v2.push_back(1);
v2.push_back(2);
std::vector<int> v3;
v3.push_back(4);
v3.push_back(5);
base.push_back(v1);
base.push_back(v2);
base.push_back(v3);
std::vector<int> comb(base.size());
print_recurssion(base,comb);
return 0;
}