c++:使用两个向量形成循环
c++ : cycle formation using two vectors
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
过于笼统,并没有表明您的意图。结果向量是输入的函数,名称必须以何种方式指示。那么我们会更好地帮助你。
相关文章:
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 查找两个排序向量中共有的元素
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 如何根据两个因素组织向量:id 和数量?(C++)
- 在C++中查找两个向量之间最相似的值
- 如何在C++中从两个向量生成所有可能的对?
- 返回两个向量 – 使用引用还是元组?
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- 检查两个向量是否并行的最有效方法
- 有没有办法将两个或多个不同的类链接到一个类中(稍后在向量上使用)?
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 如何获得比较两个向量对的子集
- C++将两个不同类型的向量的属性连接到新的向量中
- 如何组合两个整数向量
- 在两个类实例之间共享向量
- 如何在 c++ 中对两个向量进行线性搜索?
- 如何在 c++ 中从两个向量创建 JSON 对象?
- 为什么具有两个元素的发起器语法将一个元素而不是两个元素放入字符串向量中?