![]() |
1
80
首先,
从所有列出的可能性中
三个电话有什么不同?
最后,我会避免使用
|
![]() |
2
84
对于C++ 11,您有两个主要的附加选项。首先,你可以使用
这在功能上等同于
但要简洁易懂得多。正如其他答案所指出的,与其他形式相比,这有几个优点:
主要的缺点是,此表单过去要求密钥和值是可复制的,因此它不能用于例如
其次,你可以使用
这比任何形式的
|
![]() |
3
9
第一个版本:
可以或不可以将值42插入到映射中。如果钥匙
插入函数:
另一方面,如果钥匙
这三个insert函数几乎相同。
我要用哪一个?我个人更喜欢版本1,它简洁自然。当然,如果不需要它的覆盖行为,那么我更喜欢版本4,因为它比版本2和3需要更少的输入。我不知道有没有
事实上
将键/值对插入到
另一种通过一个构造函数将值插入映射的方法:
|
![]() |
4
3
我对上述版本进行了一些时间比较:
结果发现插入版本之间的时间差很小。
这分别给出了版本(我运行了文件3次,因此每个版本有3个连续的时间差):
2198毫秒,2078毫秒,2072毫秒
2290毫秒,2037毫秒,2046毫秒
2592毫秒,2278毫秒,2296毫秒
2234毫秒,2031毫秒,2027毫秒 因此,不同插入版本之间的结果可以忽略(虽然没有进行假设检验)!
这个
|
![]() |
5
2
简而言之,
引用的片段来自 有效的STL:提高标准模板库使用效率的50种具体方法 斯科特·迈耶斯说,第24项可能会有帮助。
您可能会决定选择一个通用的无编程版本,但重点是我发现这个范例(区分“add”和“update”)非常有用。 |
![]() |
6
1
如果要用键0覆盖元素
否则:
|
![]() |
7
1
如果要在std::map-use insert()函数中插入元素,如果要查找元素(按键)并为其分配一些元素,请使用operator[]。 为了简化插入,请使用boost::assign library,如下所示:
|
![]() |
8
1
我只是稍微改变一下这个问题(字符串映射)来表示对insert的另一个兴趣:
编译器在“rancking[1]=42;”上没有显示错误这一事实可能会产生毁灭性的影响! |
![]() |
9
0
自从
C++17
|
![]() |
Bob · BFS用映射C替换数组++ 7 年前 |
![]() |
aghast · 如何在std::map中放置POD结构? 7 年前 |
![]() |
killer · 地图声明未编译[重复] 7 年前 |
![]() |
ksl · 在类声明中初始化常量成员变量时,调试模式中出现异常 7 年前 |
![]() |
Ahmed Atteya · C++std::map在未找到键时添加值 7 年前 |
![]() |
Leo Lai · std::map中的基元类型值是否已初始化? 8 年前 |
|
user6421810 · C++映射未正确插入 9 年前 |
![]() |
user3794186 · C++std::map保存任意类型的值 10 年前 |