C ++ 목록 및 벡터와 관련된 3 가지 실험을 실행했습니다.
벡터가있는 사람들은 중간에 많은 삽입이 관여 된 경우에도 더 효율적인 것으로 판명되었습니다.
따라서 질문 : 어떤 경우에 목록이 벡터보다 더 의미가 있습니까?
대부분의 경우 벡터가 더 효율적으로 보이고 구성원의 유사성을 고려하면 목록에 어떤 이점이 남아 있습니까?
컨테이너가 정렬 된 상태로 유지되도록 N 개의 정수를 생성하여 컨테이너에 넣습니다. 삽입은 요소를 하나씩 읽고 새로운 큰 것을 첫 번째 큰 요소 바로 앞에 삽입하여 순진하게 수행되었습니다.
목록을 사용하면 치수가 벡터에 비해 증가하면 시간이 지붕을 통과합니다.컨테이너 끝에 N 정수를 삽입하십시오.
목록과 벡터의 경우 시간이 벡터보다 3 배 빨랐지만 시간이 같은 순서로 증가했습니다.컨테이너에 N 개의 정수를 삽입하십시오.
타이머를 시작하십시오.
list에 list.sort를 사용하고 벡터에 std :: sort를 사용하여 컨테이너를 정렬하십시오. 타이머를 중지하십시오.
다시 말하지만 시간은 같은 크기만큼 증가하지만 벡터의 경우 평균 5 배 더 빠릅니다.
계속해서 테스트를 수행하고 목록이 더 나아질 몇 가지 예를 알아낼 수 있습니다.
그러나이 메시지를 읽는 당신의 공동 경험은 더 생산적인 답변을 제공 할 수 있습니다.
목록을 사용하기가 더 편리하거나 성능이 더 좋은 상황을 경험했을 수 있습니다.
list
당신이 요소를 많이 제거하는 경우 아마도 더 나은 않습니다. vector
전체 벡터가 삭제 될 때까지 의지가 시스템에 메모리를 반환 한다고 생각하지 않습니다 . 또한 테스트 # 1은 삽입 시간 만 테스트하는 것이 아닙니다. 검색과 삽입을 결합한 테스트입니다. list
느린 곳에 삽입 할 곳을 찾는 것 입니다. 실제 인서트는 벡터보다 빠릅니다.