附加 1 向量的最佳方法是什么?

nm1*_*m17 1 c++ vector

int n = get_n(); 
std::vector<int64_t> v{4};
// append n 1s to v here?
Run Code Online (Sandbox Code Playgroud)

我通常只是创建一个向量并移动:

std::vector<int64_t> ones(n, 1);
std::move(ones.begin(), ones.end(), std::back_inserter(v));
Run Code Online (Sandbox Code Playgroud)

有比我在这里所做的更好的方法吗?

Evg*_*Evg 5

std::vector::resize有第二个可选参数作为新插入元素的默认值,所以你可以这样做

v.resize(v.size() + n, 1);
Run Code Online (Sandbox Code Playgroud)

添加n

这可能比使用的任何代码都更有效std::back_inserter(v),因为每次插入时都不会进行容量检查,并且最多会发生一次重新分配。