|
1
11
根据意见改进实施:
|
|
2
11
丢弃const是错误的,因为如果map<>上的operator[]不存在默认的构造字符串,它将创建条目。如果映射实际上在不可变的存储中,那么它将失败。必须这样做,因为运算符[]返回允许赋值的非常量引用。(如M〔1〕=2) 实现比较的快速自由功能:
如果我想些什么的话,我会考虑句法上的糖分和更新。 … 即时语法结构包含一个执行map<gt;::find()的自由函数,并返回一个特殊类,该类包装map<gt;::const_迭代器,然后重载operator==()和operator!=()以允许与映射类型进行比较。所以你可以这样做:
我不相信这比:
当然,这要复杂得多,发生的事情也不那么明显。 包装迭代器的对象的目的是停止使用默认构造的数据对象。如果你不在乎,那就用“得到”的答案。 为了回应有关GeT比比较更受欢迎的评论,希望找到一些未来的用途,我有以下评论:
尽管如此,默认构造的对象相当于在非常量容器上使用map<>::operator[]。也许您对返回默认构造对象的get函数有一个当前的需求;我知道在过去我有这个需求。 |
|
|
3
5
如果你
知道
该值存在,您当然可以放弃使用
/编辑:正如Chris正确指出的,类型为的对象的默认构造
|
|
|
4
5
有趣的是,在被接受的get实现中,模板类型发现有两种方法(获取值或返回默认构造对象的方法)。第一,你可以做被接受和拥有的事情:
或者,您可以使用映射类型并去掉其中的类型:
这样做的好处是,所传入的密钥的类型在类型发现中不起作用,并且可以隐式转换为密钥。例如:
|
|
|
5
1
实际上,operator[]在std::map上是一个非常量,因为如果它不存在,它会自动在map中插入一个键值对。(噢,副作用!)
正确的方法是使用
你
能够
添加一个
|
|
|
6
0
这对我来说不算太糟…我可能不会为此编写函数。 |
|
|
7
0
跟踪Xtofl专门化地图容器的想法。以下工作是否正常?
|
|
|
Julia · 矢量中相加为总和S的值的数量 2 年前 |
|
|
C_Rod · 在模板方法中确定STL容器中项目的数据类型 3 年前 |
|
|
quantumwell · 将空向量放入std::map() 7 年前 |
|
|
OutOfBound · 对未初始化内存使用算法的优点 7 年前 |
|
|
DarthRubik · 在使用列表删除之后,迭代器如何不无效 7 年前 |