map的key值可以是float类型吗
时间: 2023-12-10 15:42:12 浏览: 33
在C++的STL中,map的key值必须是可比较的类型,因此不能直接使用float类型作为map的key值。但是,你可以使用自定义的比较函数或者重载float类型的小于运算符来实现对float类型作为map的key值的支持。下面是一个使用自定义比较函数实现对float类型作为map的key值的示例代码:
```c++
#include <iostream>
#include <map>
using namespace std;
struct FloatCompare {
bool operator()(const float& a, const float& b) const {
return a < b;
}
};
int main() {
map<float, int, FloatCompare> myMap;
myMap[1.1] = 10;
myMap[2.2] = 20;
myMap[3.3] = 30;
for (auto it = myMap.begin(); it != myMap.end(); it++) {
cout << it->first << " " << it->second << endl;
}
return 0;
}
```
输出结果:
```
1.1 10
2.2 20
3.3 30
```
在上面的代码中,我们定义了一个名为FloatCompare的结构体,并在该结构体内部定义了一个小于号运算符,用于比较两个float类型的值的大小。然后我们在定义map时,将FloatCompare作为第三个模板参数传入,从而实现了对float类型作为map的key值的支持。