C++:合并两个以元组为元素的 vector

标签 c++ vector merge

我有两个 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/

相关文章:

c++ - cmake:添加要搜索头文件的目录

c++ - 将真正透明的 32x32 按钮从位图添加到平面工具栏

R - 将向量中的每个元素与其他向量的每个元素相加

matlab - 在matlab中使用linspace

php - 将三个 mysql 条目合并为一个条目

r - 如何合并数据框中的行并组合单元格中的因子值

c++ - 多线程访问的高效结构

c++ - 在 map vector 中查找对

git - 为什么默认情况下git在 merge 后提交?

c++ - 静态随机数生成器丢失全局变量的种子