분류 전체보기49 list vs vector vector와 list의 timecomplexity다. 이것만 보면 서로 장단 점이 있어 random access 를 할 때는 vector로 구현하고 i/d 를 쓸 때는 list를 쓰면 될 것 같다 하지만 99%가 vector를 쓴다 find 때문이다 TimeComplexity는 같지만 실행해보면 vector의 find가 훨씬 빠르다. 그 이유는 두가지 이유가 있는데 첫번째로 메모리 구조 때문이다. vector는 연속되게 저장된다 하지만 list는 3개씩 떨어진 상태로 저장된다. find를 하게 되면 vector에서는 1부터 4까지 하나씩 움직이며 찾게 되고 움직인 뒤 그 메모리는 캐시 된다 그런데 list는 떨어진 상태로 존재하기 때문에 1을 찾고 캐시를 하고 캐쉬가 캐시 미스가나고 2를 찾고 캐쉬를 .. 2022. 6. 6. list, forward_list list (Double Linked List) list 는 라는 헤더 파일을 가진다. list는 insertion/removal o(1)을 가진다 list는 Double Linked List 다 Double Linked List란 무엇일까? list nums는 포인터 두개와 size를 가지고 있다 포인트중 하나는 first를 가르키고 하나는 last를 가르킨다 size는 원소의 개수이다. 원소의 두번째 포인터는 다음 원소의 첫번째 포인터를 가르키는 형식으로 연결 되어 있다 이걸 Double Linked List라 한다. emplace_back() - O(1) emplace_front() - O(1) emplace() - O(1) find() - O(n) Merge, splice merge Merges t.. 2022. 6. 3. vector 와 array c++ Vector와 Array의 가장 큰 차이는 연속된 메모리 공간 위치이다. Vector는 -> Heap에 allocation 되고 runtime에 메모리 공간이 할당된다. runtime할당은 dynamic allocation(동적 메모리 할당) 된다. Array는 -> Stack에 allocation 되고 Compile 시간에 할당된다. Compile시간에 할당은 static memory allocation(정적 메모리 할당) 한다. 정적 메모리 할당이란 메모리 할당 방법 중에 하나로, 메모리의 크기가 하드 코딩되어 있기 때문에 프로그램이 실행될 때 이미 해당 메모리의 크기가 결정되는 것이 특징이다. 사용하는 운영체제에 따라 각 데이터형에 약속된 기억공간의 크기가 있고, 지정된 만큼 프로그램을 실행하는 프.. 2022. 6. 2. vector란 무엇 일까? c++ Vector란 무엇 일까? cppreference.com 에 검색을 해보자 std::vector is a sequence container that encapsulates dynamic size arrays. vector는 동적 사이즈 배열을 캡슐화하는 연속된 컨테이너입니다.라고 설명하고 있다 동적 사이즈 배열이란? 정적 배열처럼 크기가 정해진 배열이 아니라 요소를 추가하거나 제거할 수 있는 임의 액세스 가변 크기 목록 데이터 구조이다. 동적인 배열을 사용할 때 vector를 쓰는구나라고 유추할 수 있다. 자 그럼 동적 사이즈 배열을 연속되게 사용하는 것을 vector를 사용하지 않고 코드를 작성해 보자 #include #include using namespace std; int main() { int*.. 2022. 6. 1. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음