【发布时间】:2014-10-31 15:27:31
【问题描述】:
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> > 类型的向量 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,... 然后在`vector a`中搜索b[1] =1000,并在b中那个位置加上对应的值 就像现在 b[1] =1000 在 a[8] 处,因此 b[8] = 0100 被添加到循环 c = {a[1]=0001,b[1]=1000,b[8]=0100 ,...} 现在 b[8] = 0100 位于 a[4],因此 b[4] = 0010 被添加到循环 c= {a[1]=0001,b[1]=1000,b[8]=0100, 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(i)
示例:x=a.at(1),y=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;
}
我想知道如何编写这个循环来执行上述操作。
【问题讨论】:
-
谁能帮我写这个循环
-
我已经举了一个例子来解释。现在就清楚了
-
也许你应该从解释原始问题开始,然后解释你的向量解决方案
-
使用两个向量形成循环是我的问题
-
谁能帮我写个循环来形成这个循环