我有一个
unordered_map<string, list<SomeClass>::iterator>
我想在这个地图中插入一个元素,但前提是它不存在。如果存在,我不想覆盖现有项目。另外,我想避免进行两次查找以检查项目是否存在,然后再进行插入。我得出的结论是我应该使用 operator[] 来获取一个带有键的元素,检查它是否有效,如果不是,则初始化它。问题是该元素是一个迭代器,我必须检查它是否已初始化,这实际上是不可能的。我可以使用从列表迭代器类派生的类,并实现默认构造函数以将其初始化为“无效”值,但在构造函数中我无权访问列表实例以获取其 end() 迭代器。任何想法如何做到这一点?