31 c++
很多时候我需要一组指针.每次发生这种情况时,我最终都会为指针类型编写一个较少的<>实现 - 将两个指针强制转换为size_t并比较结果.
我的问题是 - 标准中是否提供?我找不到那样的东西.似乎很常见的情况......
更新:似乎即将推出的标准修复了所有问题,并为指针类型和包含的unordered_set提供了较少的<>.几年后,这个问题将毫无意义.
同时,当前标准没有"合法"的解决方案,但size_t演员工作.
更新更新:好吧,我会很惊讶!不只
std::map<void *, int, std::less<void*> > myMap;
Run Code Online (Sandbox Code Playgroud)
工作,但甚至
std::map<void *, int > myMap;
Run Code Online (Sandbox Code Playgroud)
同样.
这是在gcc 3.4.1.我一直在做所有这些演员阵容,而且litb是完全正确的.甚至他引用的章节编号在当前标准中也完全相同.欢呼!
Joh*_*itb 31
两个指针可以使用该比较的函数对象进行比较less
, greater
等等.否则,使用毯operator<
等,如果指针指向相同的数组对象或一个过去的端部的元件,这是唯一可能的.否则,结果未指定.
20.3.3/8
在C++ 03中
对于模板
greater
,less
,greater_equal
,和less_equal
,对于任何指针类型的专业化产生总订单,即使内置的运营商<
,>
,<=
,>=
没有.
无需显式专门化和手动转换为size_t
:这会降低可移植性,因为reinterpret_cast
从指针到整数的映射是实现定义的,不需要产生任何顺序.
编辑:有关更详细的答案,请参阅此答案.
归档时间: |
|
查看次数: |
8881 次 |
最近记录: |