gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:33:57 25 4
gpt4 key购买 nike

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

using 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<’不匹配

如果将列表更改为 vector ,则 vector const_iterators 的映射可以正常编译。

为 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;

关于c++ - 为列表迭代器的映射定义 < 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com