📜  C++ STL-multimap.operator>()函数(1)

📅  最后修改于: 2023-12-03 14:39:51.345000             🧑  作者: Mango

C++ STL-multimap.operator>()函数

简介

std::multimap 是C++ STL中的一个关联式容器,它支持自动排序,并允许重复的键值,内部实现为红黑树。operator>()函数是 std::multimap 中的一个比较操作符,用于比较两个元素的大小关系。

bool operator>()( const Key& lhs, const Key& rhs ) const;

该函数返回 true 如果 lhs 大于 rhs,否则返回 false

用法

operator>()函数在多种情况下都可以使用。例如,当我们需要对一个 std::multimap 进行排序时,我们可以使用该函数来定义多重排序的条件。

std::multimap<int, std::string> m;
m.insert(std::pair<int, std::string>(4, "apple"));
m.insert(std::pair<int, std::string>(2, "boots"));
m.insert(std::pair<int, std::string>(4, "book"));
m.insert(std::pair<int, std::string>(1, "car"));
m.insert(std::pair<int, std::string>(3, "desktop"));

// 自定义比较函数,按照关键字降序排列,如果关键字相同,则按照value升序排序
bool comp = [](const std::pair<int, std::string>& lhs, const std::pair<int, std::string>& rhs)
{
    if (lhs.first == rhs.first)
    {
        return lhs.second < rhs.second;
    }
    else
    {
        return lhs.first > rhs.first;
    }
};

// 根据自定义比较函数对multimap进行排序
std::multimap<int, std::string, decltype(comp)> m_sort(comp);
m_sort.insert(m.begin(), m.end());

// 输出排序后的multimap
for (auto& it : m_sort)
{
    std::cout << it.first << " : " << it.second << std::endl;
}

上面的代码中,我们自定义了一个比较函数comp,按照 key 值的降序排列,如果 key 值相同,则按照 value 值升序排列。我们将该比较函数传递给 std::multimap 的构造函数,得到了一个排序后的 std::multimap。最终,我们使用循环输出排序后的 std::multimap

总结

operator>()函数是 std::multimap 中的一个比较操作符,它允许用户自定义多种排序方式。我们可以根据自己的需求定制一个比较函数,并将其传递给 std::multimap 的构造函数,从而得到一个排序后的 std::multimap