我尝试过分配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
答案 0 :(得分:1)
是的,输出完全符合预期。请记住,您提交给assign
的那对迭代器是半开的区间 - 即:
c.assign(b,e);
将c
与b
对应的值分配给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);