В C ++, как инициализировать вектор со значениями {1,2, …, n} без цикла?

Предположим, что n большое целое число, как инициализировать вектор с {1,2, …, n} без цикла в C ++? Благодарю.

1

Решение

Так просто, как это:

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

Другие решения

Если 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>());
}
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector