Add same value multiple times to std::vector (repeat)

空扰寡人 提交于 2019-12-18 03:04:21

问题


I want to add a value multiple times to an std::vector. E.g. add the interger value 1 five times to the vector:

std::vector<int> vec;
vec.add(1, 5);

vec should be of the form {1,1,1,1,1} afterwards. Is there a clean c++ way to do so?


回答1:


It really depends what you want to do.

Make a vector of length 5, filled with ones:

std::vector<int> vec(5, 1);

Grow a vector by 5 and fill it with ones:

std::vector<int> vec;
// ...
vec.insert(vec.end(), 5, 1);

Or resize it (if you know the initial size):

std::vector<int> vec(0);
vec.resize(5, 1);

You can also fill with elements using one of the many versions of fill, for example:

fill_n(back_inserter(vec), 5, 1);

and so on.... Read the library documentation, some of these functions return useful information, too.




回答2:


You can just use the std::vector constructor for this:

std::vector<int> vec (5,1);

The signature for this is:

vector (size_type n, const value_type& val)

The standard algorithm header has a number of functions which can be used in cases like this. std::fill_n would work for your case.:

std::fill_n (std::back_inserter(vec), 5, 1);



回答3:


Just use 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:


You can use the assign method:

vec.assign(5, 1);

This will delete any existing elements in the vector before adding the new ones.



来源:https://stackoverflow.com/questions/30998444/add-same-value-multiple-times-to-stdvector-repeat

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!