I was trying to implement some data structures using priority queues just then i found something like

```
priority_queue< pair < int, int>, vector< pair< int, int> >, greater< pair< int, int> > >p
```

and

```
priority_queue< pair< int,pair< int,int> >,vector< pair< int,pair< int,int> > >,greater< pair< int,pair< int,int> > > > p ;
```

can someone explain me what does these structures actually do or how do they store the data in them.

and how are they different from simple structures like

```
priority_queue< pair< int,pair< int,int>>>
```

thnx…