C++ map以结构体为key的编译错误和解决方法
来源:互联网 发布:帝国cms 7.2最新漏洞 编辑:程序博客网 时间:2024/06/08 03:06
//map
//define
struct TempCoeffIndex
{
int tempClass;
int sfc;
};
mutable std::map<TempCoeffIndex,float>CONST_TEMP_COEFF;
// insert data into map
SCC::TempCoeffIndex tempIndex={0};
for(int i=0;i<4;++i)
{
tempIndex.tempClass = i+1;
for(int j=0;i<18;++j)
{
tempIndex.sfc = j+1;
CONST_TEMP_COEFF.insert(make_pair(tempIndex,i*j));
}
}
// compile
c:\program files\microsoft visual studio 9.0\vc\include\functional(143) : error C2678: 二进制“<”: 没有找到接受“const SCC::TempCoeffIndex”类型的左操作数的运算符(或没有可接受的转换)
// cause
原因,map中的key默认是以less<>升序对元素排序(排序准则也可以修改),也就是说key必须具备operator<对元素排序,而平常我们的用的基本上都是基本类型元素作为key,所以就没有问题
// solution
//重写operator < ()
struct TempCoeffIndex{
int tempClass;
int sfc;
bool operator <(const TempCoeffIndex& rs) const
{
if(tempClass < rs.tempClass)
{
return true;
}
else if(tempClass == rs.tempClass)
{
return sfc < rs.sfc;
}
return false;
}
};
- C++ map以结构体为key的编译错误和解决方法
- Map的key为自定义结构体
- map 和 unordered_map以char * 为key
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- key为自定义结构的map
- map key值为结构的写法
- c++ map key为结构体
- 【C++】自定义结构体作为map的key
- map的key元素为结构体时该结构体需重截操作符<
- c++ map中key为类对象或结构体
- Makefile 函数简介
- 深入讲解RPM包安装/升级/查询/卸载
- Java核心技术:卷1笔记[2] 对象和类
- shell编程基础【七】---awk
- Java核心技术:卷1笔记[3] 继承
- C++ map以结构体为key的编译错误和解决方法
- Java核心技术:卷1笔记[4] 接口和内部类
- 数字签名简介
- Facebook Messages & HBase
- JSP EL 自定义函数的使用
- RICHEDIT不能换行,其实是在样式里没设置多行
- Java核心技术:卷1笔记[5] 图形编程
- Ubuntu下ftp服务器配置方法 (高级配置)
- Oracle SQL优化 总结