C++ set的insert,结构体的操作符重载需要面面俱到
来源:互联网 发布:淘宝助理天猫版界面 编辑:程序博客网 时间:2024/06/06 09:46
教训:操作符重载需要面面俱到!
今天在实验代码中遇到一个问题,set 的insert函数不能给我插入两个不一样的结构体,纠结了一下午最终发现是我的 < 操作符重载 出现问题,原代码段如下:
ITEM item("S1 -> S",0,0,"#");
ITEM item1("S1 -> S",0,0,"=");
set<parser::ITEM> st1;
st1.insert(item1);
st1.insert(item);
set<parser::ITEM>::iterator it;
parser::ITEM xx;
for(it=st1.begin(); it != st1.end(); it++)
{
xx = (*it);
xx.print();//打印该结构体
}
此时< 操作符重载函数如下:
bool LR_ITEM::operator<(const LR_ITEM & item)const
{
if(item.GetNum() < NUM)return true;
else return item.POS < POS;
}
此时set之中只有item2。若上述函数改为:
bool LR_ITEM::operator<(const LR_ITEM & item)const
{
if(item.GetNum() < NUM)return true;
else if(item.GetNum() == NUM)
{
if(item.GetPos() == POS)return item.exp_symbol < exp_symbol;
else return item.GetPos() < POS;
}
}
可以得到预想的结果。
- C++ set的insert,结构体的操作符重载需要面面俱到
- 结构体作为map的key或放入set中,需要重载<运算符
- 结构体作为map的key或放入set中,需要重载<运算符
- 程序片段----std::set中使用自己定义的结构体需要重载小于号 20170904
- 面面俱到----重载
- set容器中放入结构体时需要重载运算符<
- C++结构体作为map的key的时候需要重载<运算符
- c++string类的操作符重载
- STL中set的insert操作的返回值
- 【Python入门】面面俱到的资源收集
- 关于结构体的操作符重载和定义在内部的函数
- set的重载.
- 结构体的操作符重载和内部的函数定义及使用(结构体的进一步使用)
- 结构体中运算符的重载
- 结构体中运算符的重载
- 操作符的重载
- 操作符的重载
- 操作符的重载
- 把手机变成鼠标和触摸板实现思路
- windows内核情景分析
- ubuntu下安装eclipse for C++,OPENCV
- eclipse 自动生成hbm文件
- 开发与研发:区别很大
- C++ set的insert,结构体的操作符重载需要面面俱到
- SSH端口转发
- PHP5中实现多态的两种方法实例分享投
- 在线地图数据准确性对比
- PDU模式分析
- 根据IP地址获取物理地址
- Spring注解型事务配置
- Ubuntu apt-get更新源替换及加速方法 apt-fast
- WLD特征