【发布时间】:2020-08-23 23:58:39
【问题描述】:
我的代码中有一个std::stack,我需要对其进行排序。是否有任何内置功能可以做到这一点?因为std::stack 没有std::end。我可以使用std::sort 还是必须采用相同的旧方法,即使用辅助堆栈对原始堆栈进行排序?
【问题讨论】:
-
堆栈应该是一个后进先出容器。对其进行排序会破坏该不变量。如果不需要不变量,只需使用
std::vector。 -
底层容器是受保护的成员,因此,您应该能够从
std::stack继承并在内部提供其排序。但我需要承认,我不知道这种方法是否会违反一些标准规则。 -
您将与 std::stack 一起使用的底层容器是什么?你关心排序的性能吗?
-
我的代码中有一个 std::stack,我需要对其进行排序 -- 听起来像 XY Problem
-
只使用
std::vector、push_back/pop_back元素并使用std::sort排序会不会更好?