c++:使用两个向量形成循环

c++ : cycle formation using two vectors

本文关键字:向量 两个 循环 c++      更新时间:2023-10-16
0000 00000001 10000010 00010011 11000100 00100101 01010110 10010111 11101000 01001001 01101010 10101011 01111100 0011110110111110 110111111111

我有两个std::vector<std::bitset<4> > 类型的矢量a和b

vector a --> 1st column vector b --> 2nd column

我想使用这两个向量形成循环

a[0]==b[0]==0000-->无需形成循环a[1]!=可以形成b[1]-->循环。循环"c"形成如下:c={a[1]==0001,b[1]==1000,。。。则在"向量a"中搜索b[1]=1000,并在该位置将b中的相应值相加就像现在b[1]=1000处于a[8],因此b[8]=0100被添加到循环c={a[1]=0001,b[1]=10000,b[8]=1000,…}现在b[8]=0100处于a[4],因此b[4]=0010被添加到周期c={a[1]=0001,b[1]=1000,b[8]=1000,b[4]=0010,..}现在b[4]=0010处于a[2],因此b[2]==0001,但b[2]=0001==循环'c'中的第一个元素,因此离开它,这就完成了循环。

下面的代码是我创建向量v1以形成循环"c"的地方,将值推入其中,执行操作并返回向量或循环c。

x=a.at(i),y=b.at(ⅰ)

例如:x=a.at(1),y=b.at(2)

std::vector<std::bitset<4> > getvector(int x, int y,const std::vector<std::bitset<4> >& a,const std::vector<std::bitset<4> >& b ) {
std::vector<std::bitset<4>> resultvector;
    resultvector.push_back(x);//push a.at(1) into r 
    resultvector.push_back(y);//push b.at(1) into r 
    while(resultvector.back()!=resultvector.front()) //run the loop until last element in vector r != first element in r and comes out when == 
    {
        //loop begin
        int pos = find(a,y);
        r.push_back(b.at(pos));
        //loop end 
    }
    return resultvector;
}

我想知道如何编写这个循环来执行上述操作。

r一开始是空的,因此不能调用front/back。你的代码和解释毫无意义。

试着解释一下你想在没有代码的情况下做什么,然后想想循环和不变量。

此外,为您的函数指定一个适当的名称。getVector过于笼统,并没有表明您的意图。结果向量是输入的函数,名称必须以何种方式指示。那么我们会更好地帮助你。