订购容器中的自定义排序

时间:2015-01-12 15:04:16

标签: c++ c++11 vector standard-library

我有一个带有对象的有序容器(通常是std::vector),比如说

  1. Banana
  2. Apple
  3. Peach
  4. 以上定制订单。现在,对象经历了一些处理,可能已从容器中移除并重新插入,从而产生新的有序容器。

    我已存储订单(Banana - > 1 Apple - > 2 Peach - &gt ; 3 )分开,并希望在新订购的容器中重新建立该特定自定义订单。

    此时对象已经存在(即我不能简单地按所需顺序插入)。

    所以我不知道是不是自己用一些天真的算法过度交换,我想知道标准库中是否有一些算法可以用狡猾的方式使用..?

2 个答案:

答案 0 :(得分:1)

std :: sort在标准库中,它非常狡猾!它可以按默认排序<操作员(你可以覆盖你的水果)或者你可以提供一个比较你的班级外部的比较器'实施

http://www.cplusplus.com/reference/algorithm/sort/?kw=sort

答案 1 :(得分:1)

嗯,伊戈尔写的几乎就是这个工作......

std::sort(fruits.begin(), fruits.end(), 
          [&](const std::string& a, const std::string& b) 
          { return rank[a] < rank[b]; } ); 

其中rank为std::map<std::string, int>,持有字符串到排名的映射