2024/11/27 3

자기 전 누워서 정리하는 배열과 리스트

비선형 자료구조는 선형 자료구조를 기반으로 만들어진다.비선형 자료구조는 경우에 따라어떠한 선형 자료구조로 구현하느냐에 따라성능과 메모리 공간 차지에 영향을 미친다.따라서 선형 자료구조의 이해는 아주 중요한 기반지식이다.배열은 연속된 메모리 구조를 가지고 크기가 정해져있다.리스트는 노드와 노드로 연결된 메모리 구조를 가지고크기가 가변적이다.배열의 대표적인 stl은 벡터이다.배열은 연속된 메모리 구조를 가지기 때문에,캐시 공간적 지역성을 만족하여 주변 접근이 빠르다.또한 인덱스를 이용한 임의접근이 가능하여,데이터 접근 속도는 O(1)의 속도를 가진다.벡터는 원소 삽입 삭제 시 사이즈를 넘어선 경우,중간에 삽입 삭제가 일어나는 경우삭제되고 재할당 된다.이는 성능에 영향을 끼친다.때문에 속도면에서 리스트에 비해..

decltype과 템플릿

decltype의 개요decltype 형식 지정자는 지정된 식의 형식을 생성한다.즉 쉽게 말해 받아온 개체 타입을 그대로 개체를 생성해주는 키워드이다. decltype의 일반적 용례 템플릿decltype 형식 지정자는 auto 키워드와함께 템플릿 라이브러리를 작성하는 개발자에게 주로 유용하다. decltype 및 autoC++14에서는 후행 반환 형식 없이 decltype(auto)를 사용하여반환 형식이 템플릿 인수에 따라 달라지는함수 템플릿을 선언할 수 있다. C++11에서는 auto 키워드와 함께 후행 반환 형식에 대한decltype 형식 지정자를 사용하여 반환 형식이해당 템플릿 인수의 형식에 종속되는 함수 템플릿을 선언할 수 있다. 예를 들어, 함수 템플릿의 반환 형식이템플릿 인수의 형식에 종속되는..

STL의 vector, push_back()과 emplace_back()

push_back , emplace_back 둘의 공통점push_back , emplace_back은두 함수 모두 vector컨테이너가 주어졌을 때 한 칸을 늘리고 해당 값을 넣어주게 된다. 둘의 차이점그러나 내부적으로 동작하는 것은 조금 다른데, push_back의 경우push_back의 경우 메모리를 이동하거나 임시 객체를 이용하여임시객체가 생성되고 넣어준 뒤에 임시 객체가 삭제되는 호출이 있다.-> 복사의 개념 emplace_back의 경우대신 emplace_back은 받은 인수를 이용해 내부에서 생성자를 통한 객체 생성 후추가를 하기 때문에 임시 객체의 생성, 파괴가 없어서 push_back보다 효율적일 수 있다.-> 이동의 개념