【问题标题】:How to make class sortable inside vector?如何使类在向量内可排序?
【发布时间】:2013-12-14 21:57:59
【问题描述】:

我有一个班级说class stuff{ int id; int ammount; int quality; /*...*/ };,我有一个vector<stuff> items。我想让我的收藏可以通过stuff::id 进行排序,并且可以通过staff::id 进行搜索。我可以通过 find_if 来完成,并使用一些特殊的基于 stl lambda 的排序函数进行排序。然而,我想在向量中默认拥有这一切。我听说有一些方法可以创建散列函数但我到处搜索都找不到它......那么如何使用默认向量函数使类在向量内部可排序/可搜索?

【问题讨论】:

  • 定义返回this->id < that.idstuff::operator<(const stuff &that)
  • 你能用std::map<int, int>代替吗?
  • 这里的重点是了解如何做这样的事情,以便能够像map pair::first 一样使用我的类,按我的业务逻辑定义的类搜索所有基本容器 -不是一般的整数和字符串。

标签: c++ class vector stl


【解决方案1】:

对于排序,实现一个比较两个结构的operator<

bool operator<(const stuff& s1, const stuff& s2)
{
    // Your comparison here
}

这是大多数排序默认使用的运算符。

对于相等性检查,类似地创建一个operator==

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    相关资源
    最近更新 更多