Howto create combinations of several vectors without hardcoding loops in C++?

前端 未结 10 1016
慢半拍i
慢半拍i 2020-11-29 08:40

I have several data that looks like this:

Vector1_elements = T,C,A
Vector2_elements = C,G,A
Vector3_elements = C,G,T
..... up to ...
VectorK_elements = ...

         


        
10条回答
  •  醉酒成梦
    2020-11-29 08:58

    Above printAll solution will crash when vectors are of not same size.

    Fixed that issue :

     void printAll(const vector > &allVecs, size_t vecIndex, string strSoFar)
    {
        if (vecIndex >= allVecs.size())
        {
            cout << strSoFar << endl;
            return;
        }
    
        for (size_t i = 0; i < allVecs[vecIndex].size(); i++)
        {
            if( i < allVecs[vecIndex].size() )
            {
                printAll(allVecs, vecIndex + 1, strSoFar + " " + allVecs[vecIndex][i]);
            }
        }
    }
    
    int main()
    {
        vector  Vec1;
        Vec1.push_back("A1");
        Vec1.push_back("A2");
        Vec1.push_back("A3");
        Vec1.push_back("A4");
    
        vector  Vec2;
        Vec2.push_back("B1");
        Vec2.push_back("B2");
    
        vector  Vec3;
        Vec3.push_back("C1");
    
        vector > allVecs;
        allVecs.push_back(Vec3);
        allVecs.push_back(Vec1);
        allVecs.push_back(Vec2);
    
        printAll(allVecs, 0, "");
    }
    

提交回复
热议问题