带有unordered_map和list

时间:2016-04-22 19:33:34

标签: c++ data-structures stl unordered-map

编辑:仔细观察,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?这似乎可以解决我的问题。

0 个答案:

没有答案