gpt4 book ai didi

c++ - 如何使用 range-v3 库迭代 c++ vector 并一次对两个值进行运算?

转载 作者:行者123 更新时间:2023-12-02 10:19:45 26 4
gpt4 key购买 nike

假设我有一个数字 vector :

std::vector< int > v{ 1, 2, 3, 4 };

我想遍历 vector 并一次操作两个;也就是说,我想操作:
  • (1,2) ,
  • (2,3) , 和
  • (3,4) .

  • 我知道有一种方法可以使用 Eric Neibler 的 range-v3 来做到这一点。库(计划在 C++20 中),但我不记得命令的确切顺序。

    我可以使用迭代器来做到这一点

    for( auto begin = v.begin(); begin != (v.end()-1); begin++ ){
    // Do something with *begin and *(begin+1)
    }

    使用 range-v3 库将使这更加优雅和可读。我只是不记得命令是什么。

    最佳答案

    在 Eric Niebler 的库中,这被称为滑动 View (live example):

    using namespace ranges;
    std::vector< int > v{ 1, 2, 3, 4 };

    for (const auto& p : v | views::sliding(2)) {
    std::cout << p[0] << ' ' << p[1] << '\n';
    }

    我认为 C++20 中没有立即包含这个特定的 View ,但我相信它在 future 出现的可能性很大。不幸的是, zip_view had to be cut from P1035 ,所以通过 zip 的“规范”实现(用自身减去第一个元素来压缩范围)也可能会涉及更多。

    关于c++ - 如何使用 range-v3 库迭代 c++ vector 并一次对两个值进行运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60713651/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com