Ir ao conteúdo
  • Cadastre-se

C++ Como manipular uma lista de pares?


Nera

Posts recomendados

list<pair<string,int>> my_list;
my_list.push_back(make_pair(12,10));

 

Poste algo que alguém que quer te ajudar possa compilar. Só um pedaço de código não é assim útil. Poste o programa todo.

 

Está errado do modo como escreveu. Se my_list é  list< pair<string, int> > como declarou então aquele 12 não faz sentido, certo? Talvez "12" já que o primeiro item do par é string

 

A menos que você tenha redefinido make_pair() e criado uma opção para converter o 12 para "12". Um overload em C++, override em java

 

C++ tem funções de acesso para o pair, com nomes meigos first() e second(). Um IDE moderno devia mostrar isso para você sozinho. Naturalmente como o compilador sabe do que é o par sabe o tipo de cada valor. C++.

 

Exemplo com o seu código:

 

	string chave;
	int    valor = 0;
	cout << my_list.size() << " elementos na lista:\n\n";
	for (auto x : my_list)
	{
		chave = x.first;
		valor = x.second;

		cout << "Par: (\"" << chave <<
			"\", " << valor << ")\n";
	}

 

como x é um valor de my_list, o que é x?  Um par. Um par de que? string  e int. Assim foi declarado. Então pode atribuir para chave e valor.

 

Veja em um IDE moderno (nesse caso Visual Studio em Windows) quando se escreve x a aperta o ponto para digitar o método:
 

image.png.c8a43fea12c16ee75a2497c400c02cd1.png

 

Como o editor sabe que x é um par de string e int, e na linha de cima já usou o first, então o próprio software do editor usa inteligência artificial e mostra com a estrela à esquerda o que ele ache provável que você vá digitar depois do ponto: second, já que na linha de cima foi usado o first. E depois das linhas com estrelas vem as funções possíveis. Os campos com estrela são só uma sugestão. É o que está escrito na última linha da janela: sugestão do "Intellicode baseada no contexto". Claro, na versão em português ele escreve em português. 

 

E é só teclar TAB que o editor insere o código, que está certo, apaga a janela e a vida continua.

 

Se usa um EDITOR que não faz isso ou algo parecido talvez seja hora de mudar.

 

Exemplo de saida
 

4 elementos na lista:

Par: ("forum", 10)
Par: ("clube", 10)
Par: ("do", -200)
Par: ("hardware", 200)

 

Desse "programa"

 

#include <iostream>
#include <list>

using namespace std;

int main(void)
{
	list<pair<string, int>> my_list;
	my_list.push_back(make_pair("forum", 10));
	my_list.push_back(make_pair("clube", 10));
	my_list.push_back(make_pair("do", -200));
	my_list.push_back(make_pair("hardware", +200));

	string chave;
	int    valor = 0;
	cout << my_list.size() << " elementos na lista:\n\n";
	for (auto x : my_list)
	{
		chave = x.first;
		valor = x.second;

		cout << "Par: (\"" << chave <<
			"\", " << valor << ")\n";
	}
};

 

 

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...