在c++中如何初始化一个值为{1,2,…,n}没有循环

In C++ how to initialize a vector with values {1,2,...,n} without a loop?

本文关键字:循环 c++ 初始化 一个      更新时间:2023-10-16

假设n是一个大整数,如何用{1,2,…,n}在c++中没有循环?谢谢。

就这么简单:

std::vector<int> v( 123 );
std::iota( std::begin( v ), std::end( v ), 1 );

如果N在编译时是已知的,您可以这样定义一个辅助函数:

#include<utility>
#include<vector>
template<std::size_t... I>
auto gen(std::index_sequence<I...>) {
    return std::vector<std::size_t>{ I... };
}
int main() {
    auto vec = gen(std::make_index_sequence<3>());
}