编辑:仔细观察,this other question很好地回答了我的问题。特别是巴里的回答。
我有这样的复合类型:
Struct MyType
{
const char *UID; /* Unique key string */
int64_t lastModified; /* essentially a timestamp */
... /* more data */
}
我希望能够通过UID快速查找这些对象,所以我有一个unordered_map:
std::unordered_map< std::string, MyType * > uidMap;
我还想对自某个时间戳以来更新的所有对象进行操作,所以我有一个列表:
std::list< MyType * > updateOrder;
每当我更新一个对象时,我想设置它的lastModified并将其移动到updateOrder的前面。
问题是,如果我通过其UID查找对象,我将迭代器保存到objMap中,但不会保存到updateOrder中。如果没有迭代器进入updateOrder,我就无法在恒定时间内将对象移动到列表的前面,而是我需要遍历列表才能首先找到它。
似乎我需要一个链表结构,其中链表指针包含在对象本身中。 STL是否支持这种列表?
或许我可以使用unordered_map :: iterator&gt;。我对list :: iterator有效期多长有保证吗?
或者是否有任何STL等效使用boost :: intrusive?这似乎可以解决我的问题。