프로그래밍 언어/C++ STL 5

프로그램 인터페이스 예시 STD::vector

하나의 기능을 다양한 기능으로 설계하는 인터페이스 원칙이 원칙의 대표적인 예시는 std::vector이다.std::vector는주어진 인덱스에 담긴 원소를 접근하기 위한두 가지 메서드를 제공한다.경곗값을 검사하는 at()메서드를 사용해도 되고,경곗값을 검사하지는 않지만좀 더 속도가 빠른 배열 표기법을 사용해도 된다.경곗값 검사를 반드시 한다면어느 정도 오버헤드를 감수하고 at() 메서드를 사용하면 된다.이 원칙은 인터페이스를 군더더기 없이설계해야 한다는 원칙의 예외로 봐야한다.이렇게 예외를 적용하더라도나머지 부분은 반드시 군더더기 없이 잘 설계해야한다.

STL Map

map이란?맵은 딕셔너리 구조를 가진다.키를 통해서 값을 가져온다. 키와 값을 쌍으로 저장한다.C++ map은 자동 정렬되는 컨테이너이다.이진 탐색 트리 오름차순 기반이다. // 맵만들기 예시int mian(){ std::map simpleScoreMap; // 삽입 방법 1 simpleScoreMap.insert(std::pair("Mocha", 100)); simpleScoreMap.insert(std::pair("Coco", 50)); // 삽입 방법 2 || 이 방법은 접근 방법이기도 하다 simpleScoreMap["Mocha"] = 0; std::cout 맵도 복사 생성자가 있을까? 있다.맵의 복사 생성자 작성법// 복사 생성자를 ..

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보다 효율적일 수 있다.-> 이동의 개념

STL 여섯 가지 주요 컴포넌트 - 컨테이너 - 시퀀스 컨테이너

STL에는 여섯 가지 주요 컴포넌트가 있다. 컨테이너, 제네릭 알고리즘, 반복자, 함수 객체, 어댑터, 할당기가 포함되어 있다. STL에는 두 가지 종류의 컨테이너가 있는데,하나는 시퀀스 컨테이너이고, 다른 하나는 정렬 연관 컨테이너이다. 시퀀스 컨테이너는 타입이 동일한 객체들을 선형으로 구성한 컬렉션이다.STL의 시퀀스 컨테이너에는 다음 세 가지 종류가 있다. vector : 가변 길이 시퀀스를 임의 접근할 수 있으며,시퀀스 맨 끝에서 수행되는 삽입과 삭제는 아모타이즈드 상수 시간에 수행이 가능하다.(여기서 임의 접근이 가능하다는 것은시퀀스의 i번째 원소를 접근하는데 걸리는 시간이 상수 시간이라는 것을 의미한다.이는 다시 말해, i값에 상관없이 소요 시간은 항상 일정하다는 뜻이다.) deque : 이것..

C++ STL Set

set Class  C++ 표준 라이브러리 컨테이너 클래스 set는컬렉션에서 데이터를 저장하고 검색하는 데 사용됩니다. Set은 이진 탐색 트리 기반이고 오름차순이다 O(logn)의 속도를 가진다. 요소의 set 값은 고유하며 데이터가 자동으로 정렬되는 키값으로 사용됩니다.요소의 set 값은 직접 변경되지 않을 수 있습니다.대신, 이전 값을 삭제하고 새 값의 요소를 삽입해야 합니다.  즉, set은 중복없이 저장하는 자료구조입니다.일종의 집합이라고 생각하시면 됩니다. set의 특징으로는 1. 숫자든 문자든 중복을 없엔다.2. 삽입하는 순서에 상관없이 정렬되서 입력이 된다. 이 특징을 모두 만족시킬 수 있는 자료구조는 이진트리 입니다. 즉, set은 벨런스 트리로 Red-Black 트리로 만들어져 있습니다..