【问题标题】:How to insert a pair using multiset in C++如何在 C++ 中使用多重集插入一对
【发布时间】:2012-09-25 21:53:26
【问题描述】:

我想在多重集中插入​​一个整数值和一对。

所以我声明为:

multiset < int, pair < int, int> > mp;
int m,n,p;

要插入多组我试过这个:

mp.insert(make_pair(m, make_pair(n,p))); // Compile time error

但是它给出了编译时错误...有人可以建议正确的方法来实现它。

【问题讨论】:

  • 您确定不想要multimap
  • @ildjarn 是的,我确定因为密钥可以重复...
  • 他们也可以在multimap 中——因此mapmultimap 是分开的类型。 ;-]

标签: c++ std-pair multiset


【解决方案1】:

multiset&lt;int,pair&lt;int,int&gt;&gt; 类型试图创建一个多重集,其中 Key 为 int,Compare 为 pair&lt;int,int&gt;。这是荒谬的。你要么想用

multiset<pair<int,pair<int,int>>>

或者你想使用

multiset<tuple<int,int,int>>

前一种类型 (pair&lt;int,pair&lt;int,int&gt;&gt;) 与您用于插入集合 (make_pair(m, make_pair(n,p))) 的表达式匹配。如果你使用后者,你会想要make_tuple(m,n,p)

【讨论】:

  • 感谢您的回答,不知何故它适用于 multimap 但在 multiset 的情况下失败,您能否提出一些可能的原因?
  • @risabh : multimap 有一个键和一个值,multiset 只有一个键。你想达到什么目的?当您显示无意义的代码并且不解释目标时,很难提供帮助。 ;-]
  • @ildjarn 感谢您的澄清,我对这些概念很陌生,所以在提出任何进一步的问题之前,我应该更好地研究它们......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 2020-10-04
  • 2021-02-15
  • 1970-01-01
相关资源
最近更新 更多