5

我想通过它们的名称和索引来存储数据。换句话说,我想将string名称映射到对象并给它们一个自定义顺序。

我首先想到的是一std::vectorstring密钥和对象。顺序由向量中的位置给出。

std::vector<std::pair<std::string, object> >

但这种方法似乎不是最理想的,因为它不会自动检查string名称的唯一性。此外,首先按对象的顺序对对象进行分组感觉不对,因为从逻辑上讲,它们的第一顺序区别是名称。

我需要一个允许通过名称和索引访问的数据结构。

std::magic<std::string, unsigned int, object> collection;

// access by either string or unsigned int key
collection.insert("name", 42, new object());
collection["name"]
collection[42]

这个用例是否已经有数据结构?如果没有,我怎样才能把它们放在一起,最好使用标准库?另外我想要一种在给定元素之后的位置插入新元素而不移动所有其他元素的方法。

4

1 回答 1

5

Boost 专门为此目的提供了一组容器,请参阅: boost::multiindex

于 2013-04-08T01:06:17.660 回答