用C ++映射数据结构

时间:2011-12-31 12:31:21

标签: c++ vector maps

我需要创建一个矢量地图。第一个向量包含字符串列表,第二个向量包含整数ID列表。 这可能吗?

3 个答案:

答案 0 :(得分:2)

std::map<std::string, int> isThisWhatYouNeed; //?
std::map<std::vector<std::string>, std::vector<int> > orThis; //?

答案 1 :(得分:2)

您可能希望查看Boost Variant(请参阅http://www.boost.org)。然后使用:

std::map<std::string, boost::variant<std::vector<string>, std::vector<int>>>

另一方面,如果您尝试从一个向量映射到另一个向量,则可以通过在构造映射时为键类型的向量提供自定义排序谓词来实现此目的。

答案 2 :(得分:0)

如果我正确理解你的问题,你需要一个key =&gt; vector的地图,其中一个向量包含字符串,另一个包含其他整数?

你不能混合这样的类型。你可以做的最接近的是创建一个key =&gt; CustomClass的地图,你的自定义类包含一个字符串向量和一个int向量,并且两者都被填充。

或者,如果你想要非常聪明并且可能为你创造一个大规模的调试问题,你可以做一个map * void *,并手动管理每个指针指向的内容:)