c ++ - 如果在地图中用作键,如何获得对的第一个和第二个元素?

cho*_*eem 6 c++ maps std-pair

当我在地图中使用对作为关键时,我试图获得对的第一和第二元素.为了更好地澄清,请参阅下面的代码.这是我试过的

#include <bits/stdc++.h>
using namespace std;

int main() 
{
// your code goes here
map<pair<int,int>,int>mp;
int n;
cin>>n;
int a[n];
for(int i=0;i<n;++i)cin>>a[i];
int y=0;
for(int i=0;i<n;++i)
{
    mp.insert(make_pair(y,a[i]));
    y=a[i]+1;
}
int m;
cin>>m;
int q[m];
for(int i=0;i<m;++i)cin>>q[i];
for(int i=0;i<m;i++)
{
    int temp=q[i];
    for(map<pair<int,int>,int>::iterator it=mp.begin();it!=mp.end();++it)
    {
        if(((it->first)<=temp)&&((it->second)>=temp))
        cout<<mp->second<<endl;
    }

  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想在这里获得关键的第一和第二要素.我怎么能这样做?

Cor*_*mer 10

当您遍历您的时map,您可以获得以下项目

std::pair<int, int> key = it->first;
int value = it->second;
Run Code Online (Sandbox Code Playgroud)

因此,firstsecondkey

it->first.first;
it->first.second;
Run Code Online (Sandbox Code Playgroud)

  • 我们在这里不使用 it-&gt;first-&gt;first 因为 (it-first) 不是一个指针,我们不必解引用它。这就是我们使用简单的 '.' 的原因。接线员。我说得对吗? (2认同)