在函数内部,我有一个如下所示的while循环:
void unpack(std::vector<std::string>& leftcol, std::vector<std::string>& rightcol, std::vector<std::string> origv, std::string perm) {
....
while(perm != origv[0] && perm != origv[1])
....
}
我想要做的是将perm
与origv
中的每个元素进行比较。但是如果我按顺序执行它,那么while循环将永远循环。这样做的原因是perm被置换,直到它匹配origv
个元素之一。并且只有一个匹配。
有没有办法设置perm
与origv
中的每个元素进行比较而不循环遍历向量?
因此,如果origv
有三个元素,我希望能够针对perm
检查每个元素,方法与上述代码对两个元素的处理方式相同。
要说清楚,我想说的是我不能做这样的事情:
for(std::vector<std::string>::size_type i = 0; i < origv.size(); i++)
while(perm != origv[i])
答案 0 :(得分:1)
我不理解您所描述的约束,但是测试对象是否与集合的元素相等的方法是使用std::find
:
while (std::find(origv.begin(), origv.end(), perm) == origv.end()) {
// perm not found
}