优先队列的随机排序

时间:2017-01-10 05:50:10

标签: c++ random stl

我的函数的先前版本将优先级队列(Deque)作为输入,然后while循环处理内部的元素(自定义结构)。 现在我想支持随机排序,看看是否给出了一个随机的输入序列,该函数是如何执行的。最好的方法是什么?

struct MyStruct {
  int value;
  // Other members...

  struct Compare {
  bool operator() (const std::shared_ptr<MyStruct>& a, 
                   const std::shared_ptr<MyStruct>& b) const {
    return a->value < b->value; 
  }
  };
};

功能:

void process(const auto& std::unordered_set<std::shared_ptr<MyStruct>>& myStructSet) {
  std::priority_queue<shared_ptr<MyStruct>, std::deque<shared_ptr<MyStruct>>,
                            Compare>
      orderedStructs(myStructSet.begin(), myStructSet.end());
  while (!orderedStructs.empty()) {
    ...
  }
}

我想要的是,如果程序被告知使用随机排序,它应该创建一个randomOrderedStructs,两个版本之间的唯一区别应该是双端队列中的排序(序列)。

0 个答案:

没有答案