【问题标题】:how to compare two vectors index by index contained by shared_ptr如何按 shared_ptr 包含的索引比较两个向量索引
【发布时间】:2021-01-28 14:34:20
【问题描述】:

我有两个指向字符串向量的共享指针: b_parasb_paras_sig

我已经遍历了每个循环,使用基于范围的for 循环如下:

for ( const std::string &para1 : *b_paras )

for ( const std::string &para2 : *b_paras_sig)

现在我想比较这些向量的每个元素,逐个索引并找出不匹配的地方。

我认为嵌套循环在这里可能不适合作为解决方案。

有没有办法解决这个问题?

提前致谢。

【问题讨论】:

标签: c++ for-loop shared-ptr


【解决方案1】:

在 C++ 中没有优雅的方法可以做到这一点,AFAIK。
Python 有一些 zip() 函数可以一次迭代多个序列,而 Boost 有一个等价的:https://www.boost.org/doc/libs/1_75_0/libs/iterator/doc/zip_iterator.html

否则就做类似的东西

    for(auto it = std::make_pair(a->begin(), b->begin()); 
        it.first != a->end() && it.second != b->end();
        ++it.first, ++it.second) {
            if (*it.first != *it.second) return false;
        }
    }
    return true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多