如何在stl中的向量中访问嵌套在pair中的pair元素

时间:2016-07-06 11:26:14

标签: c++ stl

我有这样的矢量:

vector < pair < int, pair < int,int > > > v

我想访问所有这三个元素。我怎么能通过迭代器做到这一点? 我已将iterator声明为it1和it2:

#include <bits/stdc++.h>
using namespace std;
int main() 
{

int t;
scanf("%d",&t);
while(t--)
{
    vector<pair<int,pair<int,int> > > v;
    int n,a,b,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&a,&b);
        v.push_back(make_pair(b,make_pair(a,i+1)));
    }
    sort(v.begin(),v.end());
    vector<pair<int,pair<int,int> > > :: iterator it1=v.begin();
    vector<pair<int,pair<int,int> > > :: iterator it2=v.begin()+1;
    printf("%d ",(it1->first)->second);

        while(it2!=v.end())
        {
            if(it2->first.first>it1.first)
            {
                printf("%d ",it2.first.second);
                it1=it2;

            }
            it2++;
        }

    }

   return 0;
}

3 个答案:

答案 0 :(得分:3)

按照类型。

如果it

上的迭代器
vector<pair<int, pair<int, int>>> 

然后*it

pair<int, pair<int, int>>  

所以it->first(a.k.a。(*it).first)是intit->secondpair<int,int>

这意味着你的元素是

it->first
it->second.first
it->second.second

答案 1 :(得分:0)

假设你有一个迭代器it,你可以这样做:

std::cout << "first int: " << it->first << " first nested int: " << it->second.first << " second nested int: " << it->second.second;

答案 2 :(得分:0)

 //  It may help you !!!

 vector < pair < int , pair < int, int > > > v;
 vector < pair < int , pair < int, int > > > ::iterator it;

 for(int i=1; i<=5; i++)
 {
     v.push_back(make_pair(i,make_pair(i+5,i+10)));
 }

 for(it= v.begin(); it!= v.end(); it++)
 {
     cout << it->first << " " << it->second.first << " " << it->second.second <<endl;
 }

// first element access  : it->first;
// second element access : it->second.first;
// Third element access  : it->second.second;