언어/Basic C++

[Basic C++] #33_Vector, 순차 컨테이너 C++ 개발에서 표준 라이브러리(STL)의 Vector에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 개념 초기화 복제, 대입 접근 삽입, 제거 크기, 용량 이동 시맨틱 #0. 개념 vector는 STL 컨테이너이며, 순차 컨테이너입니다. 여느 STL 컨테이너처럼, 템플릿 클래스이며, "항목 타입"과 "할당자 타입" 등 두 개의 파라미터를 인자로 받습니다. 저장된 항목들은 연속된 메모리에 저장되고, 각 항목은 인덱스를 통해 접근 가능합니다. #1. 초기화 #include // 디폴트 생성자 vector intVector1;// 항목 개수: 0 vector intVec..
[Basic C++] #32-3_STL 정렬 알고리즘 C++ 개발에서 표준 라이브러리(STL)에 대해 알아보겠습니다. "전문가를 위한 C"의 15 항목, "C++ 표준 라이브러리 살펴보기"에 해당하는 내용입니다. Overview 개념 partition sort make_heap #0. 개념 1. 정렬 알고리즘 알고리즘 공부를 한 번이라도 했다면, 모를 수 없는 정렬 알고리즘을 C++의 STL에서 제공합니다. 물론, STL 컨테이너에 적용하여 정렬 작업을 보다 효율적으로 진행할 수 있습니다. STL이 제공하는 몇 가지 정렬 알고리즘들을 살펴보겠습니다. #1. partition 1. 예제 /* partition(begin(), end(), f) : [b, e) 구간의 원소들 중 f(*p)가 참인 원소는 [b..
[Basic C++] #32-2_STL 탐색 알고리즘 C++ 개발에서 표준 라이브러리(STL)에 대해 알아보겠습니다. "전문가를 위한 C"의 15 항목, "C++ 표준 라이브러리 살펴보기"에 해당하는 내용입니다. Overview 탐색 알고리즘 adjacent_find find #0. 탐색 알고리즘 1. 개념 이번 항목에서 다룰 내용은 "탐색" 알고리즘입니다. 탐색 알고리즘은 컨테이너가 저장하고 있는 항목들의 정보를 리턴하거나, 항목마다 특정 함수를 호출합니다. STL 탐색 알고리즘 - adjacent_find, find, 그리고 search에 대해 알아보겠습니다. #1. adjacent_find 1. 예제 #include #include #include using namespace std; int mai..
[Basic C++] #32-1_STL알고리즘 C++ 개발에서 표준 라이브러리(STL)에 대해 알아보겠습니다. "전문가를 위한 C"의 15 항목, "C++ 표준 라이브러리 살펴보기"에 해당하는 내용입니다. Overview 개념 코드 #0. 개념 1. STL 알고리즘? C++의 STL은 몇 가지 제네릭 알고리즘을 제공합니다. 이 알고리즘들은 "템플릿"으로 구현되어 대부분이 범용적으로 사용 가능합니다. 따라서, 우리는 STL 컨테이너에(vector, set, map etc) 적용할 수 있습니다. 2. 반복자? 반복자는 C++ 프로그램의 서로 다른 데이터 구조를 균일한 방식으로 처리하기 위한 일반화 포인터입니다. #1. 코드 #include // itrator 헤더가 필요합니다. 1. begin()// 첫 번..
[Basic C++] #31-2_STL 컨테이너, vector, list, deque C++ 개발에서 표준 라이브러리(STL)에 대해 알아보겠습니다. "전문가를 위한 C"의 15 항목, "C++ 표준 라이브러리 살펴보기"에 해당하는 내용입니다. Overview vector list deque set map #0. vector 1. 개념 vector는 STL이 제공하는 순차 컨테이너에 대한 템플릿 클래스입니다. vector는 지정된 형식의 요소를 선형 배열에 저장하고, 모든 요소에 대한 빠른 임의의 접근이 가능합니다. vector의 성능은 컨테이너 끝에서 수행하는 삽입 및 제거 작업의 성능은 O(1) 상수 시간으로 비교적 빠릅니다. 하지만, 컨테이너 중간에서 수행하는 삽입 및 삭제 작업의 성능은 O(n) ..
[Basic C++] #31-1_STL, C++ 표준 라이브러리 C++ 개발에서 표준 라이브러리(STL)에 대해 알아보겠습니다. "전문가를 위한 C"의 15 항목, "C++ 표준 라이브러리 살펴보기"에 해당하는 내용입니다. 1. STL? C++의 표준 라이브러리는 템플릿을 많이 사용하므로, STL(표준 템플릿 라이브러리)라고 불립니다. C++의 STL은 제네릭 컨테이너와 제네릭 알고리즘에 중점을 둡니다. 이번 기회를 통해, STL이 제공하는 주요 컨테이너들과 이들을 활용하기 위한 알고리즘들을 알아보겠습니다. "제네릭 프로그래밍"에 대해 간단하게 설명하자면, 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식입니다..
[Basic C++] #30_캐스팅, const_cast, static_cast, dynamic_cast C++ 개발에서 까다로운 문법 혹은 특별한 의미를 갖는 부분에 대해 알아보겠습니다. "전문가를 위한 C"의 10 항목, "C++의 까다롭고 유별난 부분들"에 해당하는 내용입니다. Overview 개념 const_cast static_cast dynamic_cast #0. 개념 1. 캐스팅? C++에서 우리는 C와 동일하게 괄호를 이용한 캐스팅을 사용할 수 있습니다. 하지만, C++는 부가적으로 네 가지 새로운 방법을 제시합니다 - const_cast, static_cast, dynamic_cast, 그리고 reinterpret_cast. 이 네 가지 캐스팅 방법은 더 많은 타입 검사를 하며, 문법적으..
[Basic C++] #29_typedef C++ 개발에서 까다로운 문법 혹은 특별한 의미를 갖는 부분에 대해 알아보겠습니다. "전문가를 위한 C"의 10 항목, "C++의 까다롭고 유별난 부분들"에 해당하는 내용입니다. Overview typedef 타입 에일리어스 #0. typedef 1. 개념 /************************************************/ typedef int* intPtr; int* ptr1;// Ok intPtr ptr2;// Ok /************************************************/ typedef std::vector StringVector; int main() { std::vector myStringVector..
[Basic C++] #27_상수 표현식, constexpr C++ 개발에서 까다로운 문법 혹은 특별한 의미를 갖는 부분에 대해 알아보겠습니다. "전문가를 위한 C"의 10 항목, "C++의 까다롭고 유별난 부분들"에 해당하는 내용입니다. Overview 개념 #0. 개념 1. 상수 표현식, constexpr? const int getArraySize1() { reutrn 32; } constexpr int getArraySize2() { return 32; } int main() { int myArray[getArraySize1()];// 에러!! int myArray2[getArraySize2()];// Ok!! 정상적으로 작동 합니다. return 0; } Details C++에서 "상수 표현식"이..
[Basic C++] #26_const 포인터, const 참조 C++ 개발에서 까다로운 문법 혹은 특별한 의미를 갖는 부분에 대해 알아보겠습니다. "전문가를 위한 C"의 10 항목, "C++의 까다롭고 유별난 부분들"에 해당하는 내용입니다. Overview 개념 코드 #0. 개념 1. const const double PI = 3.141592; PI = 3.14 // 컴파일 오류 Details "const" 키워드는 상수 값을 갖는변수의 선언에 사용됩니다. 따라서, 위 코드처럼 변수 값의 변경을 시도하면 컴파일 에러를 발생시킵니다. #1. 코드 1. const 포인터 예제 // 1. 포인터가 가리키는 데이터의 변경 방지 const int* ptr;// == int const* ptr; ptr = new..
Hardii2
'언어/Basic C++' 카테고리의 글 목록 (6 Page)