2014-09-07 2 views
0
 
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; 
} 

Я хочу знать, как написать этот цикл для выполнения вышеуказанной операции.

+0

Может ли кто-нибудь помочь мне с тем, как писать этот цикл? – user3898956

+0

Непонятно мне –

+0

Я привел пример для своих объяснений. Теперь будет ясно, что – user3898956

ответ

0

r пуст для начала, поэтому передний/задний не может быть вызван. Ваш код и пояснения не имеют смысла.

Попробуйте объяснить, что вы хотите сделать без кода, а затем подумайте о циклах и инвариантах.

Кроме того, дайте вашей функции соответствующее имя. getVector слишком общий и не указывает на ваши намерения. Результирующий вектор является функцией ввода, и имя должно указывать, каким образом. Тогда мы сможем помочь вам.

+0

Надеюсь, мой пример с вектором v1, v2 поможет вам понять мои проблема – user3898956

Смежные вопросы