c++:创建带有序列号的向量



我需要创建一个具有数字序列的std::vector/std::initializer_list,我想知道是否有以下函数(https://gcc.godbolt.org/z/8EjrYKhE6)的替代方案,该函数将创建矢量,而无需填充辅助矢量:

std::vector<int> generate(int cnt)
{
std::vector<int> result(cnt);
std::iota(result.begin(), result.end(), 0);
return result;
}

(即。,其他东西来创建已经填充序列的向量,"在适当的位置";不需要调用函数-我在成员初始化列表中使用它,它工作得很好,我只是好奇它是否可以缩短为其他东西)。

是的,您可以通过c++ 20的范围适配器std::views::iota:

#include <ranges>
#include <vector>
std::vector<int> generate(int cnt)
{
auto r = std::views::iota(0, cnt);
return {r.begin(), r.end()};
}

演示。

相关内容

  • 没有找到相关文章

最新更新