我的函数的先前版本将优先级队列(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
,两个版本之间的唯一区别应该是双端队列中的排序(序列)。