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 次 |
| 最近记录: |