引用类型可以用作 STL 映射中的键类型吗
我可以构造一个 std::map
,其中键类型是引用类型,例如 Foo &
,如果不能,为什么不呢?
Can I construct an std::map
where the key type is a reference type, e.g. Foo &
and if not, why not?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
根据 C++ 标准 23.1.2/7
key_type
应该是可分配的。引用类型不是。According to C++ Standard 23.1.2/7
key_type
should be assignable. Reference type is not.不可以,因为 std::map 中的许多函数都需要对键类型的引用,而对引用的引用在 C++ 中是非法的。
/AB
No, because many of the functions in std::map takes a reference to the keytype and references to references are illegal in C++.
/A.B.
考虑
operator[](const key_type & key)
。如果
key_type
是Foo &
那么const key_type &
是什么?问题是它不起作用。您无法构造键类型为引用类型的 std::map。
Consider the
operator[](const key_type & key)
.If
key_type
isFoo &
then what isconst key_type &
?The thing is that it does not work. You can not construct an std::map where the key type is a reference type.
指针作为 std::map 的键类型是完全合法的
初始化引用不能是键:
'
Pointer as a key-type for std::map is perfectly legal
Initialised references cant be keys:
'