C++;:地图排序 我是一个C++新手,这个问题对很多人来说都是显而易见的。
如果我写了这样的东西C++;:地图排序 我是一个C++新手,这个问题对很多人来说都是显而易见的。,c++,map,std,C++,Map,Std,如果我写了这样的东西 std::map<int, double> m; std::map m; m是否保证按照int顺序排序 是否需要定义比较器类来强制排序 比如说, class own_int_less : public binary_function<int, int, bool> { public: bool operator()( const double &left, const double &right ) const
std::map<int, double> m;
std::map m;
- m是否保证按照int顺序排序李>
- 是否需要定义比较器类来强制排序李>
class own_int_less : public binary_function<int, int, bool>
{
public:
bool operator()( const double &left, const double &right ) const
{
return (abs(left - right) > epsilon) && (left < right);
};
double epsilon;
};
class own\u int\u less:公共二进制函数
{
公众:
布尔运算符()(常数双精度和左、常数双精度和右)常数
{
返回(abs(左-右)>ε)和&(左<右);
};
双ε;
};
- 排序实际上是什么时候发生的?我的意思是,每次我在地图中插入东西时,排序函数都会被调用吗?还是在我遍历映射之前调用它
对。默认的比较器是
std::less
,在您的例子中是std::less
,它只使用您定义的二进制函数
,但是您的操作符()
将两个常量double&
作为参数…请小心初始化您的成员变量。(epsilon
在您的示例中从未初始化)。