如何在 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);
将对应于 b
到 e-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);
我试过使用 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);
将对应于 b
到 e-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);