0

在函数内部,我有一个如下所示的 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])
    ....
}

我想做的是permorigv. 但碰巧如果我按顺序执行,while 循环将永远循环。这样做的原因是 perm 被置换,直到它与origv元素之一匹配。而且只有一个匹配。

有没有办法设置在不循环向量的情况下perm与每个元素进行比较?origv

因此,如果origv有三个元素,我希望能够以perm与上述代码对两个元素相同的方式检查每个元素。

需要明确的是,我想说的是我不能做这样的事情:

for(std::vector<std::string>::size_type i = 0; i < origv.size(); i++)
    while(perm != origv[i])
4

1 回答 1

1

我不明白您所描述的约束,但测试对象是否比较等于集合元素的方法是使用std::find

while (std::find(origv.begin(), origv.end(), perm) == origv.end()) {
    // perm not found
}
于 2013-10-22T17:38:02.477 回答