【发布时间】:2015-08-30 23:14:42
【问题描述】:
定义有序的指针关联容器(内置的或类类型的)是否可行,尽管事实上,据我从标准中可以看出,关系运算符(非数组对象等) .) 指针未定义?
从 c++11 标准的 5.9 开始:
- 如果相同类型的两个指针 p 和 q 指向不同的对象,这些对象不是同一对象的成员或同一数组的元素或指向不同的函数,或者如果其中只有一个为空,则 @987654321 的结果@、
p>q、p<=q和p>=q未指定。
由于有序容器(map、set、multimap 和 multiset)默认使用< 运算符来提供总顺序,它可以很好地编译以创建一组指针。再说一次,如果指针的关系运算符确实未指定,那么p<q 和p>q 都可能测试false 或true,这意味着这对于set 的排序可能不是一个好主意。如果不是因为我的书中(C++ Primer 第 5 版第 13.4 章)中的一个示例为类类型 Folder* 定义了一组指针,我可能会接受这是一个坏主意,即 @987654332 @似乎对我的担忧没有任何评论。
【问题讨论】:
标签: c++ pointers containers associative