相关疑难解决方法(0)

迭代通过std :: map的顺序是否已知(并由标准保证)?

我的意思是 - 我们知道这些std::map元素是根据键排序的.所以,让我们说键是整数.如果我从迭代std::map::begin()std::map::end()使用for,不标准的保证,我会通过与键的元素,按升序排序结果迭代?


例:

std::map<int, int> map_;
map_[1] = 2;
map_[2] = 3;
map_[3] = 4;
for( std::map<int, int>::iterator iter = map_.begin();
     iter != map_.end();
     ++iter )
{
    std::cout << iter->second;
}
Run Code Online (Sandbox Code Playgroud)

这是保证打印234还是实现定义?


现实生活中的原因:我有一个std::mapint钥匙.在非常罕见的情况下,我想用键来迭代所有元素,而不是具体的int值.是的,听起来似乎std::vector是更好的选择,但请注意我的"非常罕见的情况".


编辑:我知道,元素std::map是排序的..没有必要指出它(这里的大多数答案).我甚至在我的问题中写过它.
我在迭代容器时询问迭代器和顺序.谢谢@Kerrek SB的答案.

c++ standards dictionary stl

149
推荐指数
4
解决办法
7万
查看次数

为什么有人会使用set而不是unordered_set?

C++ 0x正在引入unordered_set,可以在boost许多其他地方使用.我理解的是unordered_set具有O(1)查找复杂性的哈希表.另一方面,set只是具有log(n)查找复杂性的树.为什么人们会使用set而不是unordered_set?即是否需要set了?

c++ algorithm data-structures c++11

134
推荐指数
10
解决办法
6万
查看次数

如何在std :: set <int>中找到最大的int?

我有一个std::set<int>,找到这个集合中最大的int的正确方法是什么?

c++ stl stdset

58
推荐指数
4
解决办法
3万
查看次数

在C++中设置STL的底层数据结构是什么?

我想知道如何在C++中实现一个集合.如果我在不使用STL提供的容器的情况下实现自己的set容器,那么最好的方法是什么呢?

我理解STL集基于二叉搜索树的抽象数据结构.那么底层数据结构是什么?数组?

另外,如何insert()为一组工作?set如何检查元素是否已经存在?

我在维基百科上读到,实现集合的另一种方法是使用哈希表.这怎么样?

c++ set

42
推荐指数
5
解决办法
3万
查看次数

在每种情况下都有`std :: set`排序元素吗?

cplusplus.com参考,它似乎std::set排序元素.

我需要排序字符串,但我不确定它是否适用于每个平台和编译器.主要是GCC,MinGW,VC.

c++ sorting stl std set

15
推荐指数
3
解决办法
2万
查看次数

STL +有序集+没有重复

我需要有一组有序的值而不重复.那么,什么是快速/最佳方法:

1 - 创建一个向量,对其进行排序并删除重复项?2 - 使用一种"排序"向量(如果存在)?

哪一个可以更有效?

c++ collections stl std duplicates

8
推荐指数
3
解决办法
1万
查看次数