c++ - 指定索引范围

标签 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 元素之一。而且只有一个匹配。

有没有一种方法可以设置 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/

相关文章:

c++ - g++ 编译器 : error invalid conversion from 'pthread_t {aka long unsigned int}' to 'void* (*)(void*)' [-fpermissive]

c++ - 从俯仰角检测头部点头姿势

c++ - 如何使用 Win32 TextOut 绘制波浪下划线

c++ - C++ 中的欧几里得整数模

c++ - 根据变量值决定宏

c++ - 如何使用特征值将上三角矩阵的复共轭分配给下三角矩阵

c++ - Main 函数被神秘地声明在某个未知的地方

c++ - 当我设置 READDATA 和 READFUNCTION 上传文件时,libcurl 在 fwrite() 处崩溃

c++ - clang++ 12 是否支持 C++20 std::construct_at?

C++ 套接字选项重用端口