为列表迭代器的映射定义<运算符

我想使用STL列表中的迭代器作为地图中的键。 例如:

使用namespace std;

list<int> l ;
map<list<int>::const_iterator, int> t;

int main(int argv,char * argc){
l.push_back(1);
t [l.begin()] = 5;
}

但是,列表迭代器没有定义比较运算符(与随机访问迭代器相反),因此编译上述代码会导致错误:

/usr/include/c++/4.2.1/bits/stl_function.h:227:错误:'__x <__y'中'operator <'不匹配

如果列表更改为矢量,则矢量const_iterators的地图编译良好。

什么是定义运算符<for list :: const_iterator的正确方法?


使用自定义比较器的参数化map

struct dereference_compare {
    template <class I>
    bool operator()(const I& a, const I& b) {
        return *a < *b;
    }
};
map<list<int>::const_iterator, int, dereference_compare> t;
链接地址: http://www.djcxy.com/p/85061.html

上一篇: defining < operator for map of list iterators

下一篇: Set position of TabTip keyboard c# is not working