合并两个已排序的向量
我有两个排序向量
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.