std::list

김대익·2022년 3월 17일
0
post-thumbnail

insertion과 deletion이 O(1)의 시간복잡도를 가진다고 써보려하지만
std::list는 거의 쓰지않는다

#include <list>

int main(int argc, char const *argv[]) {
	std::list<int> nums{1,2,3,4,5};
    
    for (auto num : nums) {
    	std::cout << nums << " ";
    }
    std::cout << std::endl;
}

를 출력하면 1,2,3,4,5가 출력된다.

메모리를 살펴보면

스택의 list 객체는 힙에 저장되는 원소들의 첫번째와 마지막 포인터 및 총 원소 개수를 가지고있고
힙에는 각 원소들이 포인터로 이전 원소의 포인터와 다음 원소의 포인터를 나타낸다.

insertion은

포인터의 값만 바꾸면 되므로 O(1)이 소모된다.
하지만 find는 first 포인터부터 iterate를 진행하면서 값을 찾는 방식이므로
random access가 되지않아 O(n)이 소모된다.

0개의 댓글