Realizei 3 experimentos diferentes envolvendo listas e vetores C ++.
Aqueles com vetores se mostraram mais eficientes, mesmo quando muitas inserções no meio estavam envolvidas.
Daí a pergunta: em qual caso as listas fazem mais sentido que os vetores?
Se os vetores parecem mais eficientes na maioria dos casos, e considerando como são seus membros, quais são as vantagens deixadas para as listas?
Gere N números inteiros e coloque-os em um contêiner para que o contêiner permaneça classificado. A inserção foi realizada ingenuamente, lendo os elementos um a um e inserindo o novo logo antes do primeiro maior.
Com uma lista, o tempo passa pelo teto quando a dimensão aumenta, em comparação com os vetores.Insira N números inteiros no final do contêiner.
Para listas e vetores, o tempo aumentou na mesma ordem de magnitude, embora tenha sido três vezes mais rápido com vetores.Inserir N números inteiros em um contêiner.
Iniciar temporizador.
Classifique o contêiner usando list.sort para listas e std :: sort para vetores. Pare o cronômetro.
Novamente, o tempo aumenta na mesma ordem de magnitude, mas é em média 5 vezes mais rápido com vetores.
Eu posso continuar realizando testes e descobrir alguns exemplos em que as listas seriam melhores.
Mas a experiência conjunta de vocês lendo esta mensagem pode fornecer respostas mais produtivas.
Você pode ter encontrado situações em que as listas eram mais convenientes de usar ou tiveram um desempenho melhor?
list
provavelmente faz melhor se você está removendo muitos elementos. Eu não acredito que uma vector
vez retorne memória ao sistema até que todo o vetor seja excluído. Lembre-se também de que seu teste nº 1 não está testando apenas o tempo de inserção. É um teste que combina pesquisa e inserção. É encontrar o lugar para inserir onde list
é lento. A inserção real será mais rápida que o vetor.