【发布时间】:2012-06-19 11:41:50
【问题描述】:
我有结构类型的队列
struct test {
int numbers;
};
queue<test> q;
如何找到最小值:
q.front().numbers;
例如,如果数字中有 5、1、3,我需要找到 1。
【问题讨论】:
-
q.front().numbers;只是一个数字,所以这是最小值... -
为什么不对队列执行 std::qsort,然后从 front() 中取出数字
-
根据您要执行的操作,您可以考虑改用
std::priority_queue。如果您需要检查队列的内容并保留顺序,则必须改用std::deque或std::list等可迭代容器。 -
@AdityaKumarPandey:可能是因为 std::queue 没有迭代器接口,而且 std::sort 无论如何都会比 qsort 更好?
-
@AdityaKumarPandey:如果你想要的只是一个集合的最小值而不是别的,那么迭代集合比对其进行排序更明智,因为它会是 O(N)。毕竟没有排序算法比这更快!