본문 바로가기
728x90

STL5

[Algorithm] STL Map과 MultiMap 맵과 멀티맵 맵과 멀티맵은 키/값 쌍을 요소로 관리하는 컨테이너이다. 이 두 컨테이너는 키 값에 대한 특정 정렬 기준을 적용하여 요소를 정렬한다. 맵은 중복을 허용하지 않으며, 멀티맵은 허용한다. 맵과 멀티맵을 사용하기 위해서는 을 인클루드 해야한다. 이는 namespace std 안에 정의 되어 있다. 첫 번째 템플릿 파라미터는 키의 자료형이며 두 번째 템플릿 파라미터는 요소의 값의 자료형이다. 맵/멀티맵의 요소는 2가지 요구 사항을 만족하는 어떠한 Key와 T라는 자료형을 사용할 수 있다. 1. 키와 값은 복사할 수 있거나 이동할 수 있어야 한다. 2. 키는 정렬 기준으로 비교할 수 있어야 한다. 세번째 템플릿 파라미터는 정렬 기준이다. 정렬 기준에서 요소는 아무 영향력이 없으며 동등 검사를 할 때에.. [프로그래밍 공부]/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.
[Algorithm] STL 배열(Array) STL이 지원하는 컨테이너 클래스인 array은 정적 배열을 나타낸다. 일반적인 C 배열을 클래스화 시켜 STL 컨테이너의 인터페이스를 제공한다. 배열은 크기가 같은 요소들이 연속적으로 모여 있는 것이기 때문에 크기를 변경할 수 없다. 요소의 값을 바꾸는 작업만 가능하다. 배열을 사용하기 위해서는 헤더파일을 인클루드 해야한다. #include namespace std에 정의 되어 있기 때문에 사용하려면 std::array로 사용한다. using namespace std를 사용하면 안그래도 된다. array는 템플릿 클래스이므로 어떠한 데이터형도 가질 수 있다. 두 번째 매개변수는 앞으로 가질 요소의 개수를 나타낸다. 배열의 기능 배열은 자신의 요소를 내부 정적 C 배열에 복사한다. 요소들은 항상 특정한 .. [프로그래밍 공부]/Algorithm 2022. 1. 15.
728x90