提问人:Ferenc Deak 提问时间:10/20/2021 更新时间:10/20/2021 访问量:348
C++:创建带有序列号的向量
C++: Create vector with sequence number in place
问:
我需要创建一个带有数字序列的 /,我想知道是否有以下函数 (https://gcc.godbolt.org/z/8EjrYKhE6) 的替代方案可以在不填充辅助向量的情况下创建向量:std::vector
std::initializer_list
std::vector<int> generate(int cnt)
{
std::vector<int> result(cnt);
std::iota(result.begin(), result.end(), 0);
return result;
}
(即,其他东西可以创建已经填充了序列的向量,“就地”,而无需调用函数 - 我在成员初始值设定项列表中使用它,并且它运行良好,如果它可以缩短为其他东西,我只是好奇)。
答:
1赞
康桓瑋
10/20/2021
#1
是的,您可以通过 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()};
}
评论
cnt
integer_sequence
vector(initializer_list)