我有两个 vector ,如下所示:
std::vector<std::tuple<unsigned int, unsigned int, float, Position, MemberOf>>
首先我对它们进行排序
std::sort(vector.begin(), vector.end(), sort_func());
struct sort_func {
inline bool operator() (std::tuple<unsigned int, float, Position> &element1, std::tuple<unsigned int, float, Position> &element2) {
if (std::get<1>(element1) < std::get<1>(element2) || (std::get<1>(element1) == std::get<1>(element2) && tau(element1) < tau(element2)))
return true;
else
return false;
}
unsigned int tau(std::tuple<unsigned int, float, Position> &element) {
if (std::get<2>(element) == end)
return 0;
else if (std::get<2>(element) == in_plane)
return 1;
else if (std::get<2>(element) == start)
return 2;
}
};
现在我得到了两个已排序的 vector ,我想以我对它们进行排序的方式合并它们。
我已经看到,有 std::merge()
方法。但我不确定如何以这种复杂的方式使用它。
有人可以解释一下如何使用我的 sort_func
当合并两个 vector 时?
最终的合并列表应保持排序顺序。这就是目标。
感谢您的建议!
最佳答案
您可以在 std::merge
中使用相同比较函数对象也请参阅第二个版本。
// v3 - output vector, v1, v2 -> sorted vector
std::merge(
v1.begin(), v1.end(),
v2.begin(), v2.end(),
std::back_inserter(v3),
sort_func()
);
关于C++:合并两个以元组为元素的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957420/