我想将一些指针存储到std::set中,但是标准指南说这是无效的。



似乎天真指针类型不支持运算符,如下所示。

Object * a = new Object;
Object * b = new Object;
a == b; // valid
a < b; //invalid
Object * arr = new Object[10];
&arr[3] == &arr[4]; // valid
&arr[3] < &arr[4]; // valid

如何将指针放入std::set或std::map的键中?我应该定义一些支持比较的包装器吗

编辑1

Some other questions表示,即使C++指针不直接支持,std::less也可以使用纯指针(没有任何其他信息)很好地工作。但我找不到任何引用。

最佳答案

确实,内置运算符<仅适用于指向同一数组的指针,而std::setstd::map不使用该运算符-它们使用std::less。反过来,这保证对所有指针施加总顺序:

关于c++ - 构造指针类型的std::set有效吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53927571/

10-11 23:04
查看更多