Как заполнить вектор цифрами от 1 до 10 в C++? У меня есть это, но оно не работает.Как заполнить вектор диапазоном?
vector<int>test(10); test={ 1, 10 };
Как заполнить вектор цифрами от 1 до 10 в C++? У меня есть это, но оно не работает.Как заполнить вектор диапазоном?
vector<int>test(10); test={ 1, 10 };
Много вариантов. Например,
vector<int> test{1,2,3,4,5,6,7,8,9,10};
или
std::vector<int> test;
test.reserve(10); // prevent some reallocations
for (int i = 1; i < 11; ++i)
test.push_back(i);
или
std::vector<int> test(10);
std::iota(test.begin(), test.end(), 1);
'iota' чувствует себя неполным с помощью' iota_iterator'. Я не хочу, чтобы нужно было инициализировать что-то просто, чтобы немедленно перезаписать его. Может быть, 'uninitialized_inserter' поможет. –
@KerrekSB Согласен. Я действительно не использую его в качестве реального кода. – juanchopanza
vector<int> vInts;
for (int i=1;i<=10;++i){
vInts.push_back(i);
}
Другой использованием generate
:
vector<int>test(10);
int x = 0;
std::generate(test.begin(), test.end(), [&]{ return x++; });
Вы можете использовать стандартный алгоритм std::iota
заявленных в заголовке <numeric>
Например
#include <numeric>
#include <vector>
//...
std::vector<int> v(10);
std::iota(v.begin(), v.end(), 1);
Вы можете использовать std::iota()
:
std::vector<int> v(10);
std::iota(v.begin(), v.end(), 1);
Конечно, вы знаете о для петель, нет? –