c – 将向量合并到现有向量中

前端之家收集整理的这篇文章主要介绍了c – 将向量合并到现有向量中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C中,给定矢量< 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结构,但每个向量包含数百万个元素,所以播放的内存总量是几十到几百兆字节.

解决方法

我至少会尝试:
std::vector<T> tmp;
tmp.reserve(src.size() + dst.size()); // commenters are probably right about this
std::merge(src.begin(),src.end(),dst.begin(),dst.end(),std::back_inserter(tmp));
src.swap(tmp);

但我怀疑这在很大程度上取决于T的性质,src和dst的大小,以及为什么我们需要优化.

猜你在找的C&C++相关文章