我有一个清单。我不会在不复制所有节点的情况下建立查找表。
不要使用int作为节点类型来简化示例:
#include<list>
#include<set>
using namespace std;
struct Comp {
bool operator()(list<int>::iterator lhs, list<int>::iterator rhs)const {
return (*lhs) < (*rhs);
}
};
int main() {
list<int> li{ 3, 2, 1, 4, 5 };
set<list<int>::iterator, Comp> si;
for (auto i = li.begin(); i != li.end(); ++i) {
si.insert(i);
}
// so far so good.
// The problems comes when I need to do some lookup:
si.find() // this requires an iterator but I only have a node
}
我想我可以创建另一个列表,插入节点,并让迭代器进行查找。但是我认为这太过头了。