Sobes.tech
Junior — Middle

Qual é a complexidade temporal do acesso por índice numa lista?

sobes.tech IA

Resposta da IA

A complexidade temporal de acesso por índice numa lista (std::list em C++) é O(n), onde n é o número do elemento.

Isto deve-se ao facto de std::list estar implementado como uma lista duplamente ligada, e para aceder a um elemento por índice é necessário percorrer sequencialmente desde o início ou o final da lista até ao elemento desejado.

Exemplo:

#include <list>
#include <iostream>

int main() {
    std::list<int> lst = {10, 20, 30, 40, 50};
    int index = 3;
    auto it = lst.begin();
    std::advance(it, index); // mover o iterador 3 posições à frente
    std::cout << "Elemento com índice " << index << ": " << *it << std::endl;
    return 0;
}

Para acesso rápido por índice, é melhor usar std::vector, onde o acesso por índice é O(1).