如何在 C++ 中划分向量

How can I divide a vector in c++

我试过使用 assign fxn 但它不起作用

c.assign(v.begin(), v.begin() + (v.size() + 1) / 2)
d.assign(v.begin() + (v.size() + 1) / 2 + 1, v.end())

例如 vec = 1,2,3,4,5,6,7,8 然后它产生结果 vec1 = 1,2,3,4 vec2 = 6,7,8

是的,输出完全符合预期。请记住,您提供给 assign 的一对迭代器是一个半开区间——即:

c.assign(b,e);

将对应于 be-1 的值分配给 c。但是您在 d.assign 语句中向迭代器添加了 1。

为了让您的代码按预期工作,您需要:

auto const b = v.cbegin();
auto const m = b+(v.size()+1)/2;
auto const e = v.cend();

c.assign(b,m);
d.assign(m,e);