这是在 C++ 中用于对可能包含重复项的整数进行排序插入的理想 STL 容器。
5 回答
如果我理解你可能是一个 std::multiset 它会存储重复但是当你遍历容器时你会得到它们的排序顺序
std::multiset
is probably the expected answer.
If the domain is relatively small (especially compared to the number of incidences), then counting sort can be used to good effect however. You would use std::vector<int>
with the size of the domain. Then the value becomes the index, and the count becomes the number of incidences.
两个明显的选择是 heap/priority_queue
或multiset
. 堆只会让您在任何时候访问最大的元素,而multiset
它将按排序顺序存储项目(带有重复项),允许您迭代它们。
随着有关您的具体问题的更多信息,可以提供更精确的答案。
如果查找和插入以该幅度交错,我宁愿建议一个简单的向量并在查找周期开始时对其进行排序。
我向您推荐以下内容:
std::multiset
在<set>
标题中找到std::priority_queue
在<queue>
标题中找到
您还可以将数据存储到 a 中std::vector/std::deque/std::list
,然后使用在标题std::sort
中找到的函数对它们进行排序。<algorithm>