STL set 集合里面不能放结构体么?
来源:互联网 发布:python图片文字识别 编辑:程序博客网 时间:2024/06/10 04:46
肯定可以,C++的设计哲学之一就是使得程序在对待自定义类型时和内置类型必须是一致的(甚至自定义类型的支持更好)。所以,肯定是你程序的问题,如下:
《C++标准程序库》中明确指出:“只要是assignable、copyable、comparable(根据某个排序准则)的型别T,都可以成为set或multiset的元素型别。”。其中,所谓的comparable指的是less,即可进行<比较。
《C++标准程序库》中明确指出:“只要是assignable、copyable、comparable(根据某个排序准则)的型别T,都可以成为set或multiset的元素型别。”。其中,所谓的comparable指的是less,即可进行<比较。
反之,则不被支持,所以,问题是,你的 struct 是否支持上述三种语义?
满足assignable以及copyable,但是不满足comparable,所以,它不能用于set容器。为了达到目的,需要做的就是添加一个对operator<的重载。
struct
A{
string str;
int
score;
};
bool
operator<(
const
A& lhs,
const
A& rhs) { //still not pass~
return
lhs.score<rhs.score;
}
一直不明白为什么greater和less、plus等等这种运算符器。。。。。。
multiset<int, greater<int>> s;
bool operator< (const Rect &r) const { ...... } // Finally compile succeed! pass !
阅读全文
0 0
- STL set 集合里面不能放结构体么?
- C++11 shared_ptr, weak_ptr速成,以及放在stl集合类里面的注意点。
- STL:集合#include <set>
- [STL基础]set集合
- STL 之 set 集合
- stl基础 set集合
- STL 集合(set)
- STL---Set(集合)
- STL set集合算法
- 【STL】集合set
- STL set集合容器
- C++ STL set集合
- STL 自定义结构体集合运算
- STL之set集合容器
- STL之set集合容器
- STL之set集合容器
- STL之set集合容器
- STL之set集合容器
- Git 教程
- 【JAVA】IOStream
- laraver 验证的几种方法:
- jquery.fn.extend与jquery.extend区别
- Jsp页面对disabled、readOnly属性的添加及移除
- STL set 集合里面不能放结构体么?
- 利用window.open在页面间传递对象,数组等变量
- 【数据建模 WOE编码】WOE(weight of evidence, 证据权重)
- Ubuntu nfs挂载树莓派文件夹
- 命令
- Invalid row number (65536) outside allowable range (0..65535)
- 文章标题
- Android USB 架构
- java学习之反射应用