合并两个已排序的向量

我有两个排序向量

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());

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

回答

我会用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));

  • @AllanWind No thanks, that's just unnecessary noise. My answer is a code snippet merging two previously defined `vector<int> v1, v2`, not a complete program.

以上是合并两个已排序的向量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>