在一个函数中,我有一个 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
中的每个元素进行比较,而无需循环遍历 vector ?
因此,如果 origv
有三个元素,我希望能够按照上面代码对两个元素所做的相同方式,根据 perm
检查每个元素。
明确地说,我想说的是我不能做这样的事情:
for(std::vector<std::string>::size_type i = 0; i < origv.size(); i++)
while(perm != origv[i])
最佳答案
我不明白你所描述的约束,但是测试一个对象是否与集合中的一个元素比较的方法是使用 std::find
:
while (std::find(origv.begin(), origv.end(), perm) == origv.end()) {
// perm not found
}
关于c++ - 指定索引范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524612/