Explorando a STL - Aula 2 - Pair

Escrito por Thiago Mota e Anita Almeida

A estrutura de dados pair é utilizada para armazenar dois valores em uma só variável. De certa forma, é bastante semelhante a uma struct simplificada. O intuito dessa estrutura é facilitar a implementação de códigos, pois ela possui diversas funções pré-implementadas.

Declaração

Para utilizarmos pairs, utilizamos a biblioteca <iostream>. A sua declaração é bastante similar à de um vector.

Acesso a um elemento

Para acessarmos o primeiro elemento do pair, utilizamos o comando first. De forma similar, o segundo elemento é acessado por meio do comando second. É bastante comum utilizarmos o tipo pair junto com um vector, tornando-o um vetor de pares de valores. Por exemplo, v = \{(1,3), (2,5), (9,4)\}. Neste vector de pairs, temos que v[1].first é igual a 2 e v[1].second é igual a 5.

Também é possível combinar pairs um "dentro" do outro. Por exemplo, imagine um problema em que precisamos armazenar o número de chamada, o nome e a nota do aluno em uma prova. Para resolver esse problema, podemos utilizar um vector em que os dados de cada aluno serão armazenados em cada posição do vetor da seguinte forma: ((nº de chamada, nome do aluno), nota). Assim, temos um pair de (int,string) com int.

Comparador do pair

Como havíamos dito anteriormente, o pair possui diversos operadores pré-implementados. O mais utilizado é o de comparação, que permite comparar dois pairs diretamente. Inicialmente, a comparação é realizada entre os primeiros elementos (os firsts); em caso de empate, os segundos elementos (os seconds) são comparados.

Por permitir comparações, é possível ordenar um vetor de pair sem um comparador (como o utilizado ao ordenarmos uma struct, por exemplo), pois este já está implementado.

Como podemos ver, o (1, 2) veio antes do (1, 3) na ordenação, pois mesmo que o primeiro valor seja igual, o segundo é menor.

Problemas para praticar:

Problema 1 - Times

Problema 2 - Sorvete

Problema 3 - Detectando Colisões

Nota: Observe que os exercícios podem ou não utilizar a estrutura pair, mas recomenda-se seu uso, por exemplo, para armazenar as coordenadas de um ponto.