목록𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆/𝐂++ (32)
도순씨의 코딩일지
set 컨테이너는 연결 컨테이너 중 가장 단순합니다. key라 불리는 원소(value)의 집합으로 이뤄진 컨테이너입니다. 균형 이진 트리로 구현되어 있습니다. set은 모든 원소가 유일합니다. set은 특정 정렬 기준(조건자)에 따라 원소를 자동 정렬합니다. 다음은 원소를 set 컨테이너에 저장하는 예제입니다. ⭐️ set의 insert() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include #include using namespace std; int main(void){ set s; s.insert(50); s.insert(30); s.insert(80); s.insert(40); s.insert(10);..
list 컨테이너는 노드 기반 컨테이너로 원소가 노드 단위로 저장됩니다. 자료구조의 이중 연결리스트로 구현됩니다. list는 노드 기반 컨테이너이기 때문에 임의 접근 반복자가 아닌 양방향 반복자를 제공합니다. 따라서 모든 원소를 탐색하기 위해서는 양방향 반복자인 ++와 --를 사용하면 됩니다. ⭐️ list의 push_back, push_front 반복자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include #include using namespace std; int main(void){ list lt; lt.push_back(10); lt.push_back(20); lt.push_back(30); lt.push_..
deque 컨테이너는 vector 컨테이너로 vector의 단점을 보완합니다. deque 컨테이너 또한 배열 기반 컨테이너입니다. deque는 여러 개의 메모리 블록을 할당하고 사용자에게는 하나의 블록처럼 보이게 합니다. 다음 예제는 push_back() 멤버 함수를 사용하여 deque에 원소를 추가하는 예제입니다. ⭐️ push_back 멤버함수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include using namespace std; int main(void){ deque dq; for(deque :: size_type i = 0 ; i
🌼 vector vector는 시퀸스 컨테이너이므로 원소의 저장 위치(순서)가 정해지며 배열 기반컨테이너입니다. vector은 큐와 비슷하게 앞쪽이 막혀있는 형태로 앞쪽에는 원소를 추가 및 제거할 수 없습니다. 오직 뒤쪽에서 원소의 변경이 가능합니다. ⭐️ vector의 push_back() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include using namespace std; int main(void){ vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); for(int i = 0 ; i
STL은 표준 C++ 라이브러리의 일부분으로 Standard Template Library를 의미합니다. STL은 프로그램의 필요한 자료구조와 알고리즘을 템플릿으로 제공합니다. 또한 이들을 반복자라는 구성요소를 통해 연결합니다. 다음과 같은 구성요소가 있습니다. 💡 컨테이너(Container): 객체를 저장하는 객체. 컬렉션 혹은 자료구조로 불리기도 한다. 💡 반복자(iterator): 포인터와 비슷한 개념. 컨테이너의 원소를 가리키고 가리키는 원소에 접근하여 다음 원소를 가리킨다. 💡 알고리즘(Algorithm): 정렬, 삭제, 검색, 연산 등을 해결하는 방법을 제공한다. 💡 함수 객체(Function Object): 함수처럼 동작하는 객체. operand() 연산자를 오버로딩한 객체. 💡 어댑터(Ad..
🌼 C++의 예외처리 : try, catch, throw 💡 try : 예외를 발견한다 💡 catch : 예외를 잡는다 💡 throw : 예외를 던진다 위 설명을 더 자세하게 살펴보도록 합시다. try 블록은 예외발생에 대한 검사의 범위를 지정합니다. try 블록에서 예외가 발생하면 catch 부분으로 넘어가 예외를 처리합니다. 키워드 throw는 예외가 발생했음을 알립니다. throw에 의해서 던져진 '예외 데이터'는 try 블록에 의해서 감지가 되고 catch 블록에 의해서 처리됩니다. 예제를 한 번 살펴봅시다. ⭐️ HandlingExceptionTryCatch.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include using name..
🌼 Point 클래스 템플릿과 배열 클래스 템플릿 다음과 같은 형태는 생소하지만 템플릿 클래스의 객체를 저장할 수 있습니다. 1 BoundCheckArray oarr(50); cs 만약 저장대상이 Point 템플릿 클래스 객체가 아닌 Point형 포인터라면 다음과 같이 표현 가능합니다. 1 BoundCheckArray oparr(50); cs 예제를 통해서 직접 살펴봅시다. ⭐️ PointTemplate.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #ifndef __POINT_TEMPLATE_H_ #define __POINT_TEMPLATE_H_ template class Point{ private: T xpos, ypos; public: Po..
🌼 함수를 대상으로 템플릿 이해하기 함수 템플릿은 함수를 만들어내는 역할을 합니다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않습니다. 그러므로 자료형을 결정해주어야 합니다. 다시 한 번 말하자면 함수 템플릿은 함수를 만드는 도구입니다. 자바의 제네릭과 유사하죠. 예시를 통해서 함수 템플릿을 이해해봅시다. 1 2 3 int Add(int num1, int num2){ return num1 + num2; } cs 위 함수의 정보를 요약해보면 다음과 같습니다. 💡 함수의 기능 : 덧셈 💡 대상 자료형 : int형 데이터 이러한 함수를 만들어낼 수 있는 템플릿은 다음과 같이 정의됩니다. 1 2 3 T Add(T num1, T num2){ return num1 + num2; } cs 위 함수의 정..