如何在c ++中划分向量

时间:2016-06-05 14:45:19

标签: c++11 vector c++14 stdvector

我尝试过分配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

1 个答案:

答案 0 :(得分:1)

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

c.assign(b,e);

cb对应的值分配给e-1。但是你已经在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);