使用C ++中的多个键映射

时间:2013-04-06 17:43:07

标签: c++ key std stdmap compound-key

我想通过它们的名称和索引来存储数据。换句话说,我想将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] 名称的唯一性。此外,首先按顺序对对象进行分组是错误的,因为从逻辑上讲,它们的第一个顺序区别是名称。

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

{{1}}

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

1 个答案:

答案 0 :(得分:5)

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

相关问题