As coleções são muito úteis ao implementar o armazenamento de dados flexíveis e genéricos. A maioria das coleções pode encolher ou crescer no programa.
Vamos explorar várias estruturas de dados na linguagem de programação de ferrugem e como executar as operações básicas.
Aqui, temos as quatro principais categorias para as coleções de ferrugem:
Vamos discutir cada categoria em detalhes.
Coleções de sequência
Aqui, discutiremos os três tipos de coleções de sequência em Rust:
VEC
Um VEC ou vetor é uma matriz cultivável contígua que armazena valores em uma lista, um após o outro na memória.
Para criar um novo vetor vazio, use o novo método, como mostrado abaixo:
Seja mut vec = vec :: new ();
Em seguida, você pode adicionar elementos ao vetor usando o método push:
VEC.push (1);
VEC.push (2);
Para imprimir um vetor, use o traço de depuração, conforme fornecido abaixo:
println!(":? ", vec);
Remova o elemento em um vetor usando o método Remover e o índice do elemento a ser removido, como mostrado abaixo:
VEC.remover (0); // Remova o elemento no índice 0
println!(":? ", vec);
Vecdeque
Um vetor de vecdeque ou de ponta dupla é um tampão de anel cultivável não contíguo. Podemos criar um novo buffer vazio usando o novo método, conforme fornecido abaixo:
Use STD :: Coleções :: Vecdeque;
Deixe mut deque = vecdeque :: new ();
Os métodos Vecdeque usa push_front () e push_back () para adicionar elementos à frente ou traseira do deque:
Deque.push_front (1);
deque.push_front (2);
deque.push_front (3);
// retrocesso
deque.push_back (4);
deque.push_back (5);
Para imprimir os elementos do Vecdeque, use o traço de depuração:
Println!(":? ", deque);
Para remover os elementos de um Vecdeque, use os métodos Pop_front () e Pop_back () para remover um elemento da frente e de trás do deque, respectivamente.
O exemplo a seguir é fornecido abaixo:
deque.pop_back ();
deque.pop_front ();
println!(":? ", deque);
Isso deve retornar como mostrado abaixo:
[3, 2, 1, 4, 5]
[2, 1, 4]
LinkedList
Esta é uma lista duplamente vinculada com nós próprios. É útil quando você precisa de um vetor ou deque de tamanho desconhecido.
Para criar uma nova lista LinkedList vazia, use o seguinte:
Use STD :: Coleções :: LinkedList;
Seja Mut Lnk = LinkedList :: new ();
Usamos os métodos push_front () e push_back () para adicionar elementos à frente e traseira de uma lista vinculada, respectivamente.
Por exemplo:
Seja Mut Lnk = LinkedList :: new ();
lnk.push_front (3);
lnk.push_front (2);
lnk.push_front (1);
lnk.push_back (4);
lnk.push_back (5);
println!(":? ", lnk);
O exemplo anterior deve retornar da seguinte maneira:
[1, 2, 3, 4, 5]
Para remover elementos de uma lista vinculada, use os métodos Pop_front e Pop_back:
lnk.pop_back ();
lnk.pop_front ();
println!(":? ", lnk);
A saída é como mostrado:
[1, 2, 3, 4, 5] // antes de
[2, 3, 4] // depois
Coleções de mapas
A segunda categoria de coleções de ferrugem nos mapas, e estes incluem:
Hashmap
Um hashmap permite que você armazene o mapeamento de pares de valores-chave. Ele usa uma função de hash para determinar como as chaves e os valores são armazenados na memória. Eles são muito úteis quando você precisa armazenar valores relacionados. Ele usa uma chave em vez de um índice para recuperar valores.
Para criar um novo hashmap, use a seguinte sintaxe:
Use STD :: Coleções :: Hashmap;
Deixe Mut mapa = hashmap :: new ();
Para inserir pares de valor-chave em um hashmap, use o seguinte método de inserção:
mapa.inserir (0, "angular");
mapa.inserir (1, "react");
mapa.inserir (3, "mithril");
mapa.inserir (4, "vue");
Para imprimir um hashmap, use o seguinte:
println!(":? ", mapa);
Isso deve retornar como mostrado abaixo:
1: "React", 2: "Svelte", 3: "Mithril", 4: "Vue", 0: "Angular"
Lembre -se de que a chave e o valor podem ser qualquer tipo suportado.
Para excluir elementos de um hashmap, use o método remove () da seguinte forma:
mapa.remover (1);
BTTEEMAP
Você percebe que um hashmap não é classificado. Se você está procurando um mapa classificado, use o BTTEEMAP. Cada elemento no breeMap é armazenado em seu próprio nó alocado por heap.
Para criar um novo breeMap, use o seguinte:
use std :: coletes :: btreemap;
Deixe mut btree = btreemap :: new ();
Para adicionar elementos, use o seguinte método de inserção.
btree.inserir ("chave", "valor");
Para excluir um elemento, use o método Remover como:
btree.remover ("chave");
Definir coleções
A próxima categoria de coleções de ferrugem é o conjunto. Esses tipos são derivados da teoria dos conjuntos e incluem:
Hashsets
Um hashset é intimamente semelhante a um hashmap. Isso significa que é uma forma definida de um hashmap e não permite valores duplicados.
Para criar um novo hashset, use a seguinte sintaxe:
Use STD :: Coleções :: HashSet;
Deixe mut set = hashSet :: new ();
Use a inserção e remova os métodos para adicionar e excluir elementos de um hashmap, respectivamente.
definir.inserir ("a");
definir.remover ("a");
Btreeset
Esta é uma implementação definida de um breeMap. Podemos criar um novo btreeset, como mostrado abaixo:
use std :: coletes :: btreeset;
Deixe mut set = btreeset :: new ();
Insira e remova os elementos conforme fornecido abaixo:
definir.inserir ("a");
definir.remover ("a");
Coleções misc
Existe apenas um tipo nas coleções misc.
BinaryHeap
Heap binário permite que você implemente uma ampla árvore binária. Você pode criar uma nova pilha binária, conforme fornecido abaixo:
Use STD :: Coleções :: BinaryHeap;
Seja mut heap = binaryheap :: new ();
Para adicionar elementos, use o seguinte método push:
pilha.push ("item");
Para remover um valor, use o seguinte método pop:
pilha.pop ();
O método pop remove o melhor item em uma pilha.
Conclusão
Este guia abrange as estruturas de dados populares e úteis e suas operações básicas na linguagem de programação de ferrugem. Além disso, discutimos em detalhes as quatro principais categorias das coleções de ferrugem, como sequências, mapas, conjuntos e Misc. Esperamos que você tenha achado este artigo útil. Verifique os outros artigos de dica do Linux para obter mais dicas e informações.