Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用向量向量,将整数向后推不适用于Mac OS X_C++_Vector - Fatal编程技术网

C++ 使用向量向量,将整数向后推不适用于Mac OS X

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

我将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: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;jstd::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;jstd::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;
}