Dia 5 – Deque vs. Vector vs. Array

Enquanto estava construindo o objeto “snake” que é referente ao protagonista do meu jogo. Tive contato com uma estrutura de dados que ainda não havia ouvido falar: deque.

Quando usar deque?
É usado quando precisamos de inserção ou remoção eficiente no…


This content originally appeared on DEV Community and was authored by Matheus Gomes ?‍?

Enquanto estava construindo o objeto "snake" que é referente ao protagonista do meu jogo. Tive contato com uma estrutura de dados que ainda não havia ouvido falar: deque.

Quando usar deque?
É usado quando precisamos de inserção ou remoção eficiente no inicio ou no fim da sequência. E reparando, isso faz sentido para o contexto da snake, tendo em vista que o protagonista irá crescer conforme se alimenta no jogo. Porém, essa é a melhor opção? Vamos dar uma olhada em outras estruturas que já ouvi falar:

O que é array?
É uma estrutura fixa, o seu tamanho não pode ser alterado e é conhecido em tempo de compilação. É o mais eficiente em questão de desempenho, mas não pode remover ou adicionar mais itens. Podemos chegar a conclusão que pro contexto que estamos buscando não é o ideal.

E o vector?
Esse é bastante semelhante ao deque. É usado quando precisamos de dinamicidade, porém a remoção ou inserção só acontece no final. Então, talvez seja essa a melhor escolha pro nosso protagonista, tendo em vista que sempre que se alimentar, irá crescer no final. PORÉM! E quando a snake tem que se mover? Uma boa ideia seria remover o item do final, e lança-lo ao inicio, dando sensação de movimento.

Por enquanto minha classe está assim:



#ifndef SNAKE_H
#define SNAKE_H

#include "raylib.h"
#include <deque>

class Snake {
public:
    std::deque<Vector2> body = { Vector2{6,9}, Vector2{5,9}, Vector2{4,9} };
    void Draw();
};

#endif


Irei ponderar essa questão de utilizar vector ou deque.

Exemplos de uso de vector, deque e array:



#include <vector>
std::vector<int> vec = {1, 2, 3};
vec.push_back(4);  // Adiciona no final




#include <deque>
std::deque<int> dq = {1, 2, 3};
dq.push_front(0);  // Adiciona no início
dq.push_back(4);   // Adiciona no final




int arr[3] = {1, 2, 3};  // Tamanho fixo
arr[0] = 0;  // Modifica o primeiro elemento


Há outras estruturas como: list, set, map e etc... Mas atendem propósitos distintos, e não entrarei nesses méritos por enquanto.

Curiosidade

Vocês sabiam que se pesquisar snake no Google, aparece um jogo super bem feito e com desafios diários bem interessantes? Achei bem legal 😄.


This content originally appeared on DEV Community and was authored by Matheus Gomes ?‍?


Print Share Comment Cite Upload Translate Updates
APA

Matheus Gomes ?‍? | Sciencx (2024-10-03T20:00:00+00:00) Dia 5 – Deque vs. Vector vs. Array. Retrieved from https://www.scien.cx/2024/10/03/dia-5-deque-vs-vector-vs-array/

MLA
" » Dia 5 – Deque vs. Vector vs. Array." Matheus Gomes ?‍? | Sciencx - Thursday October 3, 2024, https://www.scien.cx/2024/10/03/dia-5-deque-vs-vector-vs-array/
HARVARD
Matheus Gomes ?‍? | Sciencx Thursday October 3, 2024 » Dia 5 – Deque vs. Vector vs. Array., viewed ,<https://www.scien.cx/2024/10/03/dia-5-deque-vs-vector-vs-array/>
VANCOUVER
Matheus Gomes ?‍? | Sciencx - » Dia 5 – Deque vs. Vector vs. Array. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/10/03/dia-5-deque-vs-vector-vs-array/
CHICAGO
" » Dia 5 – Deque vs. Vector vs. Array." Matheus Gomes ?‍? | Sciencx - Accessed . https://www.scien.cx/2024/10/03/dia-5-deque-vs-vector-vs-array/
IEEE
" » Dia 5 – Deque vs. Vector vs. Array." Matheus Gomes ?‍? | Sciencx [Online]. Available: https://www.scien.cx/2024/10/03/dia-5-deque-vs-vector-vs-array/. [Accessed: ]
rf:citation
» Dia 5 – Deque vs. Vector vs. Array | Matheus Gomes ?‍? | Sciencx | https://www.scien.cx/2024/10/03/dia-5-deque-vs-vector-vs-array/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.