为列表迭代器的映射定义<运算符
我想使用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