多次向std :: vector添加相同的值(重复)

Kac*_*kao 21 c++ vector std

我想多次向std :: vector添加一个值.例如,将向量值1添加到向量中五次:

std::vector<int> vec;
vec.add(1, 5);
Run Code Online (Sandbox Code Playgroud)

之后vec的格式应为{1,1,1,1,1}.有一个干净的c ++方法吗?

小智 41

这真的取决于你想做什么.

制作一个长度为5的向量,用以下内容填充:

std::vector<int> vec(5, 1);
Run Code Online (Sandbox Code Playgroud)

将矢量增加5并将其填充为1:

std::vector<int> vec;
// ...
vec.insert(vec.end(), 5, 1);
Run Code Online (Sandbox Code Playgroud)

或者调整大小(如果你知道初始大小):

std::vector<int> vec(0);
vec.resize(5, 1);
Run Code Online (Sandbox Code Playgroud)

您还可以使用众多版本之一填充元素fill,例如:

fill_n(back_inserter(vec), 5, 1);
Run Code Online (Sandbox Code Playgroud)

等等......阅读库文档,其中一些函数也会返回有用的信息.


Tar*_*ama 8

您可以使用std::vector构造函数:

std::vector<int> vec (5,1);
Run Code Online (Sandbox Code Playgroud)

签名是:

vector (size_type n, const value_type& val)
Run Code Online (Sandbox Code Playgroud)

标准algorithm头有许多功能,可以在这种情况下使用.std::fill_n适合你的情况:

std::fill_n (std::back_inserter(vec), 5, 1);
Run Code Online (Sandbox Code Playgroud)


iva*_*ult 8

只是用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;
}
Run Code Online (Sandbox Code Playgroud)