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

Dominando std::list em C++: Sintaxe, Funções e Exemplos Práticos

O que é std::list?

Em C++, std::list é um contêiner de sequência que armazena elementos como uma lista duplamente encadeada. Essa estrutura permite inserir ou remover itens em qualquer posição em tempo constante, além de iterar sobre a lista em ambas as direções. Embora não forneça acesso aleatório rápido como std::vector, ela se destaca em cenários onde ocorrem inserções ou exclusões frequentes.

O contêiner gerencia automaticamente a memória por meio de um alocador, podendo crescer ou diminuir em ambas as extremidades durante a execução.

Por que usar std::list?

Definindo uma Lista

Para usar std::list, inclua o cabeçalho <list>:

#include <list> // Definição do template
// template<class T, class Alloc = std::allocator<T>> class list;

Parâmetros:

Exemplo 1: Iteração Básica

#include <iostream>
#include <list>
int main() {
    std::list<int> minha_lista{12, 5, 10, 9};
    for (int x : minha_lista) {
        std::cout << x << '\n';
    }
}

Saída:

Dominando std::list em C++: Sintaxe, Funções e Exemplos Práticos

Operações Comuns do std::list

FunçãoDescrição
insert()Insere um elemento antes da posição do iterador.
push_back()Adiciona um elemento ao final.
push_front()Adiciona um elemento ao início.
pop_front()Remove o primeiro elemento.
size()Retorna o número de elementos.
front()Acessa o primeiro elemento.
back()Acessa o último elemento.
reverse()Inverte a ordem dos elementos.
merge()Mescla duas listas ordenadas em uma.

Construtores

Exemplo 2: Variantes de Construtores

#include <iostream>
#include <list>
int main() {
    std::list<int> l; // vazia
    std::list<int> l1{10, 20, 30};
    std::list<int> l2(l1.begin(), l1.end()); // cópia de intervalo
    std::list<int> l3(std::move(l1)); // movimento
    std::cout << "Tamanho de l: " << l.size() << '\n';
    std::cout << "Conteúdo de l2:\n";
    for (int x : l2) std::cout << x << '\n';
    std::cout << "Conteúdo de l3:\n";
    for (int x : l3) std::cout << x << '\n';
}

Saída:

Dominando std::list em C++: Sintaxe, Funções e Exemplos Práticos

Propriedades do Contêiner

Inserindo Elementos

Use push_front, push_back ou insert para adicionar itens.

Exemplo 3: Inserções Mistas

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

Saída:

Dominando std::list em C++: Sintaxe, Funções e Exemplos Práticos

Excluindo Elementos

Use erase para remover elementos únicos ou intervalos.

Exemplo 4: Demonstração de Erase

#include <iostream>
#include <list>
int main() {
    std::list<int> minha_lista{12, 5, 10, 9};
    std::cout << "Antes da exclusão:\n";
    for (int x : minha_lista) std::cout << x << '\n';
    minha_lista.erase(minha_lista.begin()); // remove o primeiro
    std::cout << "Após a exclusão:\n";
    for (int x : minha_lista) std::cout << x << '\n';
}

Saída:

Dominando std::list em C++: Sintaxe, Funções e Exemplos Práticos

Principais Conclusões

Linguagem C

  1. Operadores em C++ Explicados: Tipos, Exemplos e Programas Práticos
  2. Laço do-while em C++: Sintaxe, Exemplos Práticos e Loops Aninhados
  3. Dominando Switch-Case em C++: Sintaxe, Uso e Exemplos Práticos
  4. Dominando Alocação Dinâmica de Arrays em C++: Guia Prático com Exemplos de Código
  5. Dominando Ponteiros em C++: Conceitos, Exemplos e Aplicações Práticas
  6. Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
  7. Structs em C++ Explicadas com Exemplo Prático
  8. Funções em C++ Explicadas com Exemplos Práticos de Código
  9. C++ Struct vs Class: Diferenças Principais, Sintaxe e Melhores Casos de Uso
  10. Counter do Python em collections: Contagem Eficiente, Atualização e Operações Aritméticas