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)
有比我在这里所做的更好的方法吗?
std::vector::resize有第二个可选参数作为新插入元素的默认值,所以你可以这样做
v.resize(v.size() + n, 1);
Run Code Online (Sandbox Code Playgroud)
添加n。
这可能比使用的任何代码都更有效std::back_inserter(v),因为每次插入时都不会进行容量检查,并且最多会发生一次重新分配。