首页 > 解决方案 > 合并两个排序的向量

问题描述

我有两个排序的向量

std::vector<int> v1 = {1,3}
std::vector<int> v2 = {2}

我想以这样的方式合并这两个向量,以便在合并后它们保持排序

第一种方法:

std::vector<int> v3;

for (int i = 0; i < v1.size(); i++)
{
   v3.push_back(v1[i]);
}

for (int i = 0; i < v1.size(); i++)
{
   v3.push_back(v2[i]);
}

sort(v3.begin(), v3.end());

我不想要这种方法。我想要比这个更好的方法。

标签: c++

解决方案


我会使用std::merge

std::vector<int> v3;
v3.reserve(v1.size() + v2.size());
std::merge(v1.begin(), v1.end(),
           v2.begin(), v2.end(),
           std::back_inserter(v3));

推荐阅读