Добавьте одно и то же значение несколько раз в std :: vector (repeat)
Я хочу добавить значение несколько раз к std :: vector. Например, добавьте значение 1 для интерьеров к вектору:
std::vector<int> vec;
vec.add(1, 5);
vec должен иметь следующий вид: {1,1,1,1,1}. Существует ли чистый c++ способ сделать это?
Ответы
Ответ 1
Это действительно зависит от того, что вы хотите сделать.
Сделайте вектор длиной 5, заполненный единицами:
std::vector<int> vec(5, 1);
Вырастите вектор на 5 и заполните его единицами:
std::vector<int> vec;
// ...
vec.insert(vec.end(), 5, 1);
Или измените его размер (если вы знаете начальный размер):
std::vector<int> vec(0);
vec.resize(5, 1);
Вы также можете заполнить элементы, используя одну из многих версий fill
, например:
fill_n(back_inserter(vec), 5, 1);
и т. д.... Читайте библиотечную документацию, некоторые из этих функций также возвращают полезную информацию.
Ответ 2
Вы можете просто использовать конструктор std::vector
для этого:
std::vector<int> vec (5,1);
Подпись для этого:
vector (size_type n, const value_type& val)
Стандартный заголовок algorithm
имеет ряд функций, которые можно использовать в таких случаях. std::fill_n
будет работать для вашего дела:
std::fill_n (std::back_inserter(vec), 5, 1);
Ответ 3
Просто используйте std::vector::insert
.
#include <vector>
#include <iostream>
int main()
{
std::vector<int> a;
a.insert(a.end(), 5, 1);
for(auto const& e : a)
std::cout << e << std::endl;
return 0;
}
Ответ 4
Вы можете использовать метод присваивания:
vec.assign(5, 1);
Это приведет к удалению любых существующих элементов в векторе перед добавлением новых.