본문 바로가기

전체 글68

(C++)List 리스트는 vector, deque와 같은 시퀀스 컨테이너지만 각 원소가 서로 상대적인 순서를 유지하는게 아닌 노드단위로 연결되있단 점이 가장 큰 차이이다. 시퀀스 데이터들을 다룰때 주의해서 쓴다면 큰 효과를 발휘할 수 있는 컨테이너라고 생각된다. vector, deque와 차이점 원소접근 list는 []이나 at()같은 임의 접근자를 사용하지 못한다. 배열이 아닌 노드로 연결되어 있기 때문에 반복자 탐색을 통해 원소에 접근해야 한다. 그래서 총 N개의 원소를 가질때 O(N)만큼의 시간이 걸린다. 삽입,삭제 삽입하거나 지울때는 연결만 해주거나 끊어주면 되기 때문에 vector, deque와 다르게 상수시간대 밖에 걸리지 않는다. vector, deque에서 삽입하거나 지울때면 다른 원소들을 움직여야 하는데.. 2020. 9. 16.
(C++)Vector / Deque 시퀀스 컨테이너인 Vector와 Deque에 대해 차이점 위주로 알아보도록 하자. 공통점 둘은 정말 비슷한 컨테이너라 할 수 있다. 원소 추가, 삭제, 조회 , 연산 모두 같은 방식으로 호출하고 사용된다. - erase 원소를 삭제할때 erase를 호출하며 배개변수로 반복자포인터 하나가 들어갈 수도 있고 두개가 들어가서 한번에 여러 범위의 원소를 지울 수 있다. 주의 해야 할 점은 반복자 순회에서 해당 위치의 원소 삭제 후 해당 포인터가 삭제되므로 순회할때 예외적으로 처리 해줘야 한다. 아래는 해당 코드이다. int main() { vector vec; vec.push_back(1); vec.push_back(4); vec.push_back(1); vec.push_back(1); vec.push_back.. 2020. 9. 14.
(C++)STL STL(Standard Template Library)는 자료구조와 알고리즘을 템플릿으로 제공하는 라이브러리이다. STL의 구성요소 - 컨테이너 : 객체들을 저장하는 객체 - 반복자 : 컨테이너의 원소를 가리키고 STL내의 자료구조와 알고리즘을 연결시킴 - 알고리즘 : 정렬, 삭제, 연산 등을 해결하는 함수 템플릿 - 함수 객체 : 함수처럼 동작하는 객체. (less(), greater()) - 어댑터 : deque의 인터페이스를 변경해 stack으로 만든것처럼 기존의 구성요소의 인터페이스를 변경해 새로운 구성요소로 만드는것 - 할당기(Allocator) : 컨테이너의 메모리 할당 정책을 캡슐화한 클래스 컨테이너 - 시퀀스 컨테이너 : vector, deque, list처럼 원소가 삽입되는 순서에 따라 .. 2020. 9. 14.
(C++) 템플릿 템플릿은 함수나 클래스에서 실행 시 받는 타입별로 따로 구현해놓지 않아도 임의의 타입에 맞게 자동으로 구현되는 기능이다. 템플릿의 과정 컴파일이 시작되면 구체적 타입에 맞게 템플릿 인스턴스가 생성 된다. 이 과정은 단순 코드의 복사 붙여넣기와 동일하며 RunTime에 타입을 변화시켜주는 자바의 제네릭과는 확실히 다르다. virtual 같은 동적 바인딩과도 다른것이다. 특수화 템플릿 특수화 템플릿은 특정한 타입만의 예외를 제공해주는 템플릿이다. 특수화 시 지켜야 할점이 있는데 매개변수와 리턴값의 타입을 똑같이 맞춰줘야 한다. template void test(T data) { std::cout 2020. 9. 14.