0000 0000 0001 1000 0010 0001 0011 1100 0100 0010 0101 0101 0110 1001 0111 1110 1000 0100 1001 0110 1010 1010 1011 0111 1100 0011 1101 1011 1110 1101 1111 1111
У меня есть два вектора а и Ь типа std::vector<std::bitset<4> >
C++: формирование цикла с использованием двух векторов
vector a --> 1st column vector b --> 2nd column
Я хочу, чтобы сформировать циклы с использованием этих 2 векторов
a[0] == b[0] == 0000 -- > no need to form a cycle a[1] != b[1] --> cycle can be formed. cycle 'c' is formed as follows: c = {a[1]==0001,b[1]==1000,... then search for b[1] =1000 in `vector a` and add the corresponding value in b at that position like now b[1] =1000 is at a[8], hence b[8] = 0100 is added to the cycle c = {a[1]=0001,b[1]=1000,b[8]=0100,...} now b[8] = 0100 is at a[4], hence b[4] = 0010 is added to the cycle c= {a[1]=0001,b[1]=1000,b[8]=0100,b[4]=0010,..} now b[4] =0010 is at a[2], hence b[2] == 0001 but b[2] = 0001 == 1st element in cycle 'c' hence leave it and this completes the cycle.
Ниже код, где я создаю вектор v1 для формирования цикла 'c', вставлять в него значения, выполнять операции и возвращать вектор или цикл c.
х = a.at (я), у = b.at (я)
пример: х = a.at (1), у = b.at (1)
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;
}
Я хочу знать, как написать этот цикл для выполнения вышеуказанной операции.
Может ли кто-нибудь помочь мне с тем, как писать этот цикл? – user3898956
Непонятно мне –
Я привел пример для своих объяснений. Теперь будет ясно, что – user3898956