본문 바로가기
728x90

standard templete library6

[Algorithm] STL Map과 MultiMap 맵과 멀티맵 맵과 멀티맵은 키/값 쌍을 요소로 관리하는 컨테이너이다. 이 두 컨테이너는 키 값에 대한 특정 정렬 기준을 적용하여 요소를 정렬한다. 맵은 중복을 허용하지 않으며, 멀티맵은 허용한다. 맵과 멀티맵을 사용하기 위해서는 을 인클루드 해야한다. 이는 namespace std 안에 정의 되어 있다. 첫 번째 템플릿 파라미터는 키의 자료형이며 두 번째 템플릿 파라미터는 요소의 값의 자료형이다. 맵/멀티맵의 요소는 2가지 요구 사항을 만족하는 어떠한 Key와 T라는 자료형을 사용할 수 있다. 1. 키와 값은 복사할 수 있거나 이동할 수 있어야 한다. 2. 키는 정렬 기준으로 비교할 수 있어야 한다. 세번째 템플릿 파라미터는 정렬 기준이다. 정렬 기준에서 요소는 아무 영향력이 없으며 동등 검사를 할 때에.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL Set과 MultiSet Set과 MultiSet은 자신의 요소를 특정 정렬 기준에 따라 정렬한다. Set과 MultiSet의 큰 차이는 Set은 요소의 중복을 허용하지 않고 MultiSet은 중복을 허용한다는 것이다. Set과 MultiSet을 사용하기 위해서는 을 인클루드 해야한다. 또한 namespace std에 존재한다. 셋과 멀티셋은 정렬 기준에 부합하는 자료형만 넣을 수 있다. 두 번째 템플릿 파라미터에 정렬 기준을 넣을 수 있다. 기본으로는 less이다. less는 연산자 = param2 이 밖에도 많이 있다. 정렬.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 순방향 리스트 (Forward list) 순방향 리스트 C++11에서 도입된 컨테이너로 자신의 요소를 단방향 연결리스트로 관리한다. 사진 출처 : http://hyeonstorage.tistory.com/259 순방향 연결리스트를 사용하기 위해서는 를 인클루드 해야한다. namespace std 안에 정의되어 있다. 기능 순방향 리스트는 개념적으로 되돌아가지 못하는 리스트와 같다. 따라서 리스트가 제공하지 않는 기능은 제공되지 않는다. 리스트보다 좋은 점은 메모리를 덜 사용하고 실행 시간이 조금 더 빠르다 되돌아가지 못하기 때문에 리스트에는 없는 제약 조건이 몇 가지 있다. 1. 양방향이 아닌 순방향 반복자를 제공한다. 따라서 역방향 연산은 제공되지 않는다. 2. size() 함수를 제공하지 않는다. 공간이나 시간 부하를 만드는 특성을 생략했기.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 리스트(List) 리스트 리스트는 요소들을 양방향 연결리스트의 형태로 관리한다. 리스트를 사용하기 위해서는 를 인클루드 해야한다. 리스트는 namespace std에 정의되어 있다. 리스트 객체는 앵커(anchor)라 불리는 포인터 2개를 제공한다. 이 두 개의 포인터는 첫 번째와 마지막 요소를 가리킨다. 새로운 요소를 삽입하기 위해서는 이 포인터를 조작해야한다. 이로인해 벡터, 데크, 배열과는 다른 특성이 나타난다. 1. 리스트는 임의 접근을 제공하지 않는다. n번째 요소에 접근하기 위해서는 링크를 타고 가야 한다. 양방향 리스트로 되어있기 때문에 뒤에서도 타고 갈 수 있다. 2. 각 위치에서 요소를 삽입하고 제거하는 연산은 빠르다. 다른 요소의 이동이 필요 없기 때문이다. 포인터만 몇개 고치면 바로 삽입/삭제가 가능하.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 데크(Deque) 데크 ( deque ) 데크는 벡터와 유사하다. 동적 배열에 요소를 관리하며 임의 접근을 허용한다. 또한 벡터의 거의 동일한 인터페이스를 제공한다. 데크와 벡터의 차이는 테크는 동적 배열의 양 끝이 모두 열려있다. 즉, 앞 뒤 모두 삽입/삭제가 가능하다. 데크를 사용하기 위해서는 를 인클루드 해야한다. 또한 namespace std에 정의되어 있다. 데크의 기능 1. 요소의 삽입/삭제는 동적 배열의 시작과 끝 부분 모두 빠르다. 2. 내부 구조는 요소에 접근할 때 하나 이상의 간접 방식을 취하기 때문에 대체로 요소 접근이나 반복자 이동이 약간 더 느리다. 3. 반복자는 특수한 자료형의 스마트포인터여야 한다. 4. 메모리 블록에 대한 크기 제한이 있는 시스템의 경우 데크가 벡터보다 더 많은 요소를 가질 수.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 벡터(Vector) 벡터 벡터는 동적배열을 만드는 연산을 수행한다. 벡터를 사용하기 위해서는 를 포함해야 한다. 또한 vector는 namespace std에 존재한다. 벡터의 요소는 어떤 자료형이라도 올 수 있다. 두 번째 템플릿 매개변수로 메모리 모델을 정의할 수 있는데 기본 메모리 모델은 allocator 모델이다. 기능 벡터는 자신의 요소를 내부의 동적 배열로 복사한다. 벡터는 임의 접근을 제공한다. 즉, 위치를 안다면 상수 시간 내에 접근할 수 있다. 동적배열이기 때문에 중간에 데이터를 삽입/삭제 하는 경우 성능이 떨어진다. 벡터는 현재 요소를 저장하기 위한 메모리보다 많은 메모리를 할당한다. 현재 메모리보다 더 많은 요소가 삽입되면 벡터는 재배치를 수행한다. 벡터의 용량은 매우 중요한데 그 이유는 2가지가 있다... [프로그래밍 공부]/Algorithm 2022. 1. 15.
728x90