gpt4 book ai didi

c++ - 如何在 C++20 Ranges TS 中实现类似 Python 的切片?

转载 作者:行者123 更新时间:2023-11-30 02:17:23 24 4
gpt4 key购买 nike

The ranges TS已合并到 C++20 中。我想知道用该提案实现类似 Python 的切片操作的最佳方法是什么?具体来说,假设 avector<int> , 如何实现:

  • a[:5] (前 5 个元素)
  • a[5:] (从第5个元素到最后)
  • a[2:4] (第二和第三个元素)
  • a[2::-1] (a[2], a[1], a[0])
  • a[4:1:-2] (a[4], a[2])

最佳答案

以下是我能够匹配您的示例的所有片段,请将这些作为如何使用 current 的提示。 TS的实现。

std::vector<int> elements{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

// First five elements
std::vector<int> a = elements | ranges::view::take(5);

// From the 5-th elements to the end
std::vector<int> b = elements | ranges::view::drop(5);

// The 2nd and 3rd elements
std::vector<int> c = elements | ranges::view::slice(2, 4);

// The first 3 elements, in reverse
std::vector<int> d = elements | ranges::view::take(3) | ranges::view::reverse;

// Elements 2-4 inclusive, reversed, and then taking every 2nd element
std::vector<int> e = elements | ranges::view::slice(2, 5) | ranges::view::reverse | ranges::view::stride(2);

关于c++ - 如何在 C++20 Ranges TS 中实现类似 Python 的切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53639962/

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