2012-07-02 60 views
1

这是在C++中用于可能包含重复项的整数的排序插入的理想STL容器。STL按排序顺序存储数字

+1

你想如何使用容器?容器要做什么操作?这些操作中的每一个操作有多频繁(相对)? (顺便说一句:这个问题是一半烘烤,几乎不可能没有额外的信息回答,这使我想知道为什么最后票) –

+0

用于存储整数排序容器使用索引像第二个最高e.t.c – titan

+0

多少个插入?与查找相比有多频繁?容器是否已初始化,然后仅执行查找?它们是交错的吗?你仍然没有回答关键问题。 –

回答

2

如果我理解你可能一个std :: multiset的 它将存储重复,但是当你遍历容器,你会得到他们的排序顺序

0

两个明显的选择是一个堆/ priority_queuemultiset 。堆将只允许您访问任何点上的最大元素,而multiset将按排序顺序存储项目(带有重复项),允许您遍历它们。

有关您的特定问题的更多信息,可以提供更精确的答案。

+0

相同我们可以使用索引像数组访问multiset中的元素? – titan

+0

@titan不,你不能使用索引访问像数组。 – Jagannath

+0

@titan如果你想随机访问你的容器元素,然后使用'std :: map/std :: multimap' –

0

std::multiset可能是预期的答案。

如果域相对较小(特别是与发生次数相比),则可以使用计数排序来获得较好的效果。您将使用std::vector<int>与域的大小。然后,该值成为索引,并且计数成为发生次数。

0

如果查找和插入与该量级交错,我宁愿建议一个简单的向量,并在查找周期开始时对其进行排序。

0

我建议你如下:

  1. std::multiset<set>
  2. std::priority_queue<queue>头中发现

您还可以将数据存储到一个std::vector/std::deque/std::list,然后对它们进行排序使用在<algorithm>标题处找到的std::sort函数。