【发布时间】:2012-04-01 13:56:15
【问题描述】:
我是 C++ 的新手,这个问题对很多人来说似乎很明显。
如果我写类似
std::map<int, double> 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;
};
- 排序实际发生在什么时候?我的意思是每次我在地图中插入一些东西时都会调用排序函数吗?还是在我遍历地图之前调用它?
谢谢。
【问题讨论】:
-
您定义了一个
binary_function<int, int, bool>,但您的operator()将两个const double &作为参数... -
小心初始化你的成员变量。 (
epsilon在您的示例中从未初始化)。