본문 바로가기

c++9

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.
Call by value Call by reference Call by address 정리c++ call by value : 값에 의한 전달 call by reference : 참조에 의한 전달 call by address : 주소에 의한 전달 Call by value : 값에 의한 전달 arg * arg 를 실행한뒤 num의 값은 100이 되었다 하지만 main() 함수에서의 num의 값은 그대로 10이다. 그 이유는 주소를 확인해 보면 알 수 있다. 서로 공유하는 주소 값이 다른 것 을 확인 할 수 있다. 이러한 경우를 값복사 Call By Value 라고 한다. 말 그대로 인자(num)의 값이 매개변수(Func)에 복사 된것을 말한다. Call By Reference 참조에 의한 전달 Call By Reference 참조에 의한 전달 위에 빨간줄이 있는 곳을 보면 인자값에 &앰퍼샌드가 있는 것.. 2022. 5. 22.