指定索引范围

Specifying a range of indices

本文关键字:范围 索引      更新时间:2023-10-16

在一个函数中,我有一个 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])
我不

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

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