Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

std::list em C++ com exemplo

O que é uma std::lista?


Em C++, o std::list refere-se a um contêiner de armazenamento. O std:list permite inserir e remover itens de qualquer lugar. O std::list é implementado como uma lista duplamente ligada. Isso significa que os dados da lista podem ser acessados ​​bidirecionalmente e sequencialmente.

A lista da Biblioteca de modelos padrão não oferece suporte ao acesso aleatório rápido, mas oferece suporte ao acesso sequencial de todas as direções.

Você pode espalhar elementos de lista em diferentes blocos de memória. As informações necessárias para o acesso sequencial aos dados são armazenadas em um contêiner. O std::list pode expandir e diminuir de ambas as extremidades conforme necessário durante o tempo de execução. Um alocador interno atende automaticamente aos requisitos de armazenamento.

Neste tutorial de C++, você aprenderá:

Por que usar std::list?


Aqui estão os motivos para usar std::List :

Sintaxe da lista


Para definir o std::list, temos que importar o arquivo de cabeçalho . Aqui está a sintaxe de definição std::list:
template < class Type, class Alloc =allocator<T> > class list;

Aqui está uma descrição dos parâmetros acima:
  • T – Define o tipo de elemento contido.
    Você pode substituir T por qualquer tipo de dados, mesmo tipos definidos pelo usuário.
  • Alloc – Define o tipo do objeto alocador.
    Isso usa o modelo de classe do alocador por padrão. É dependente de valor e usa um modelo simples de alocação de memória.

Exemplos 1:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };

	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

Saída:



Aqui está uma captura de tela do código:



Explicação do código:

  1. Inclua o arquivo de cabeçalho do algoritmo para usar suas funções.
  2. Inclua o arquivo de cabeçalho iostream para usar suas funções.
  3. Inclua o arquivo de cabeçalho da lista para usar suas funções.
  4. Chame a função main(). A lógica do programa deve ser adicionada no corpo desta função.
  5. Crie uma lista chamada my_list com um conjunto de 4 inteiros.
  6. Use um loop for para criar uma variável de loop x. Esta variável será usada para iterar sobre os elementos da lista.
  7. Imprima os valores da lista no console.
  8. Fim do corpo do for a loop.
  9. Fim do corpo da função main().

Funções de lista C++


Aqui estão as funções comuns std::list:
Função Descrição insert()Esta função insere um novo item antes da posição que o iterador aponta.push_back()Esta função adiciona um novo item no final da lista.push_front()Adiciona um novo item na frente da lista.pop_front()Apaga o item da lista first item.size()Esta função determina o número de elementos da lista.front()To determina os primeiros itens da lista.back()To determina o último item da lista.reverse()Inverte os itens da lista.merge()Mescla dois listas ordenadas.

Construtores


Aqui está a lista de funções fornecidas pelo arquivo de cabeçalho :
  • Construtor padrão std::list::list()- Cria uma lista vazia, que, com zero elementos.
  • Construtor de preenchimento std::list::list()- Cria uma lista com n elementos e atribui um valor zero (0) a cada elemento.
  • Construtor de intervalo std::list::list()- cria uma lista com muitos elementos no intervalo do primeiro ao último.
  • Copiar construtor std::list::list()- Cria uma lista com uma cópia de cada elemento contido na lista existente.
  • Move construtor std::list::list()- cria uma lista com os elementos de outra lista usando a semântica de movimento.
  • Construtor de lista inicializador std::list::list()-Cria uma lista com os elementos de outra lista usando a semântica de movimento.

Exemplo 2:

#include <iostream>
#include <list>
using namespace std;
int main(void) {
	list<int> l;
	list<int> l1 = { 10, 20, 30 };
	list<int> l2(l1.begin(), l1.end());
	list<int> l3(move(l1));  
	cout << "Size of list l: " << l.size() << endl;
	cout << "List l2 contents: " << endl;
	for (auto it = l2.begin(); it != l2.end(); ++it)
	      cout << *it << endl;
	cout << "List l3 contents: " << endl;
	for (auto it = l3.begin(); it != l3.end(); ++it)
		cout << *it << endl;
	return 0;
}

Saída:



Aqui está uma captura de tela do código:



Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream para usar suas funções.
  2. Inclua o arquivo de cabeçalho da lista para usar suas funções.
  3. Inclua o namespace std no código para usar suas classes sem chamá-lo.
  4. Chame a função main(). A lógica do programa deve ser adicionada no corpo desta função.
  5. Crie uma lista vazia chamada l.
  6. Crie uma lista chamada l1 com um conjunto de 3 inteiros.
  7. Crie uma lista chamada l2 com todos os elementos da lista chamados l1, do início ao fim.
  8. Crie uma lista chamada l3 usando a semântica de movimento. A lista l3 terá o mesmo conteúdo da lista l2.
  9. Imprima o tamanho da lista chamada l no console junto com outro texto.
  10. Imprima algum texto no console.
  11. Crie um iterador com o nome dele e use-o para iterar sobre os elementos da lista com o nome l2.
  12. Imprima os elementos da lista chamada l2 no console.
  13. Imprima algum texto no console.
  14. Crie um iterador chamado it e use-o para iterar sobre os elementos da lista chamada l3.
  15. Imprima os elementos da lista chamada l3 no console.
  16. O programa deve retornar o valor após a conclusão bem-sucedida.
  17. Fim do corpo da função main().

Propriedades do contêiner


Aqui está a lista de propriedades do contêiner:
Propriedade Descrição Os contêineres SequenceSequence ordenam seus elementos em uma sequência linear estrita. Os elementos são acessados ​​por sua posição na seqüência.Lista duplamente ligadaCada elemento tem informações sobre como localizar os elementos anteriores e seguintes. Isso permite tempo constante para operações de inserção e exclusão.Allocator-awareUm objeto alocador é usado para modificar o tamanho do armazenamento dinamicamente.

Inserindo em uma lista


Existem diferentes funções que podemos usar para inserir valores em uma lista. Vamos demonstrar isso:

Exemplo 3:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	my_list.push_front(11);
	my_list.push_back(18);
	auto it = std::find(my_list.begin(), my_list.end(), 10);
	if (it != my_list.end()) {
		my_list.insert(it, 21);
	}
	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

Saída:



Aqui está uma captura de tela do código:



Explicação do código:

  1. Inclua o arquivo de cabeçalho do algoritmo para usar suas funções.
  2. Inclua o arquivo de cabeçalho iostream para usar suas funções.
  3. Inclua o arquivo de cabeçalho da lista para usar suas funções.
  4. Chame a função main(). A lógica do programa deve ser adicionada no corpo desta função.
  5. Crie uma lista chamada my_list com um conjunto de 4 inteiros.
  6. Insira o elemento 11 na frente da lista chamada my_list.
  7. Insira o elemento 18 no final da lista chamada my_list.
  8. Crie um iterador e use-o para encontrar o elemento 10 da lista my_list.
  9. Use uma instrução if para determinar se o elemento acima foi encontrado ou não.
  10. Insira o elemento 21 antes do elemento acima se for encontrado.
  11. Fim do corpo da instrução if.
  12. Use um loop for para criar uma variável de loop x. Esta variável será usada para iterar sobre os elementos da lista.
  13. Imprima os valores da lista no console.
  14. Fim do corpo do for um loop.
  15. Fim do corpo da função main().

Exclusão de uma lista


É possível excluir itens de uma lista. A função erase() permite excluir um item ou um intervalo de itens de uma lista.
  • Para excluir um único item, basta passar uma posição inteira. O item será excluído.
  • Para excluir um intervalo, você passa os iteradores inicial e final. Vamos demonstrar isso.

Exemplo 4:

#include <algorithm>
#include <iostream>
#include <list>
using namespace std;
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	cout << "List elements before deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	list<int>::iterator i = my_list.begin();
	my_list.erase(i);
	cout << "\nList elements after deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	return 0;
}

Saída:



Aqui está a captura de tela do código:



Explicação do código:

  1. Inclua o arquivo de cabeçalho do algoritmo para usar suas funções.
  2. Inclua o arquivo de cabeçalho iostream para usar suas funções.
  3. Inclua o arquivo de cabeçalho da lista para usar suas funções.
  4. Inclua o namespace std em nosso programa para usar suas classes sem chamá-lo.
  5. Chame a função main(). A lógica do programa deve ser adicionada no corpo desta função.
  6. Crie uma lista chamada my_list com um conjunto de 4 inteiros.
  7. Imprima algum texto no console.
  8. Use um loop for para criar uma variável de loop x. Esta variável será usada para iterar sobre os elementos da lista.
  9. Imprima os valores da lista no console.
  10. Fim do corpo do loop for.
  11. Crie um iterador i que aponte para o primeiro elemento da lista.
  12. Use a função erase() apontada pelo iterador i.
  13. Imprima algum texto no console.
  14. Use um loop for para criar uma variável de loop x. Esta variável será usada para iterar sobre os elementos da lista.
  15. Imprima os valores da lista no console. Isso vem após a exclusão.
  16. Fim do corpo do loop for.
  17. O programa deve retornar um valor após a conclusão bem-sucedida.
  18. Fim do corpo da função main().

Resumo:

  • O std::list é um contêiner de armazenamento.
  • Permite a inserção e exclusão de itens de qualquer lugar em tempo constante.
  • É implementado como um link duplo
  • Os dados std::list podem ser acessados ​​bidirecionalmente e sequencialmente.
  • std::list não suporta acesso aleatório rápido. No entanto, ele suporta acesso sequencial de todas as direções.
  • Você pode espalhar elementos de lista de std::list em diferentes blocos de memória.
  • Você pode reduzir ou expandir std::list de ambas as extremidades conforme necessário durante o tempo de execução.
  • Para inserir itens em std::list, usamos a função insert().
  • Para excluir itens do std::list, usamos a função erase().

Linguagem C

  1. Operadores em C++ com Exemplo:O que é, Tipos e Programas
  2. C++ do… while loop com exemplos
  3. Instrução C++ Switch Case com EXEMPLO
  4. Alocação dinâmica de matrizes em C++ com exemplo
  5. Ponteiros C++ com exemplos
  6. Sobrecarga do operador C++ com exemplos
  7. Estrutura C++ com exemplo
  8. Funções C++ com exemplos de programas
  9. Diferença entre estrutura e classe:explicada com exemplo de C++
  10. Contador Python em coleções com exemplo