【发布时间】:2012-08-28 09:32:47
【问题描述】:
在 C++ 中,给定 vector<T> src, dst,两者都已经排序,是否有一种更有效的方法来将 src 的内容合并到 dst 中而不是
size_t n = dst.size();
dst.insert(dst.end(), src.begin(), src.end());
std::inplace_merge(dst.begin(), dst.begin() + n, dst.end());
?在我关心的情况下,T 是一个很小的(12-16 字节,取决于 ABI)POD 结构,但每个向量包含数百万个元素,因此所使用的内存总量为数十到数百兆字节。
【问题讨论】:
-
我认为
inplace_merge的最后一个参数需要是dst.end()而不是dst.size()。 -
马克:你说得对,我的源文件中正确,但在编写问题时以某种方式破坏了它。现已修复。
-
@yes123:这个问题不是关于合并排序的向量。
标签: c++ optimization stl