如何构造具有两个值的MultiMap(>>语法错误)?

时间:2014-04-23 18:59:57

标签: c++ stl

我目前有这段代码:

typedef std::pair<std::string,std::string> myPair;

std::multimap<int,pair > topNodes;

topNodes.insert(std::make_pair(someNode->counter,
std::make_pair(someNode->phrase,title)));

如何创建具有密钥和两个关联值的多图? 或者有更好的方法吗?

  

错误:没有可行的转换         &#39; __ map_iterator&lt; __ tree_iterator&lt; __ value_type&lt; [...],struct         std :: __ 1 :: pair,class         std :: __ 1 :: basic_string&gt;&gt;,类std :: __ 1 :: __ tree_node,类std :: __ 1 :: basic_string&gt; &gt;,无效         * GT; *,[...]&gt;&gt;&#39;到&#39; __ map_iterator&lt; __ tree_iterator&lt; __ value_type&lt; [...],         class std :: __ 1 :: basic_string&gt ;, class std :: __ 1 :: __ tree_node&gt;,void *&gt;         *,[...]&gt;&gt;&#39;

我使用How to insert a pair of std::pair inside another std::pair?作为插入的参考。

1 个答案:

答案 0 :(得分:3)

std::multimap<int,pair > topNodes; //Error cause > > not compiling

为什么你认为它应该?那时pair是什么?

<子> 请记住std::pair<>需要具有正确的模板参数才能实例化它。

  

或者有更好的方法吗?

你可能意味着这样的事情:

typedef std::pair<std::string,std::string> myPair;

std::multimap<int,myPair> topNodes;
// ...