Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, eu gostaria de saber como extrair o valor de uma lista de pares.

 

list<pair<string,int>> my_list;

my_list.push_back(make_pair(12,10));

 

  • Curtir 1
Postado

Salvo enganos, std::list não possui funções pra acessar elementos aleatórios diretamente através de um índice. Então você teria que usar um iterador, por exemplo it,

 

std::list<std::pair<string, int>>::iterator it = my_list.std::list::begin();

 

 

 

  • Curtir 1
Postado
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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!