指定一系列指数

时间:2013-10-22 17:32:29

标签: c++

在函数内部,我有一个如下所示的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个元素之一。并且只有一个匹配。

有没有办法设置permorigv中的每个元素进行比较而不循环遍历向量?

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

要说清楚,我想说的是我不能做这样的事情:

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

1 个答案:

答案 0 :(得分:1)

我不理解您所描述的约束,但是测试对象是否与集合的元素相等的方法是使用std::find

while (std::find(origv.begin(), origv.end(), perm) == origv.end()) {
    // perm not found
}