분류 전체보기

[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..
[Basic C++] #25_우측 값 참조, 이동 시맨틱 C++ 개발에서 까다로운 문법 혹은 특별한 의미를 갖는 부분에 대해 알아보겠습니다. "전문가를 위한 C"의 10 항목, "C++의 까다롭고 유별난 부분들"에 해당하는 내용입니다. Overview 개념 코드 #0. 개념 1. 우측 값 참조?
#1. 개념 1. 우측 값int a;a = 5; // a는 좌항, 5는 우항좌항 혹은 좌측 값은 그 주소를 얻을 수 있는 이름을 가진 대상을 말합니다. 반대로, 우항 혹은 우측 값은 상수 값 혹은 임시 객체를 의미합니다.  #2. 코드// 1. 좌측값 참조형 파라미터void incr (int& val) { ++val; }int a = 10, b = 11;incr(a);incr(b);// 2. 우측값 참조형 파라미터void incr (int&& val) { ++val; }incr(5); // 상수값incr(a+b); // 임시 변수incr(std::Move(a)); // std::Move() : 좌항 변수 -> 우측값 참조로 변환C++에서 &&를 활용해 우측 값 참조가 가능합니다. 특히, move() ..
#1. 개념 1. 참조에 의한 전달(Call-by-reference)void swap (int& first, int& second){ int tmp = first; first = second; second = tmp;}참조형은 변수의 별명으로, 특정 변수가 할당 받은 메모리 영역을 참조하며, 역참조 연산을 자동으로 수행하는 포인터입니다. 따라서, '참조에 의한 전달'은 함수 인자 전달 방식 중 하나로 함수 매개변수를 '참조형'으로 선언하여 활용 가능합니다. 참조에 의한 전달은 원본 면수가 가리키는 메모리 영역을 참조형 매개 변수로 하여금 공유하도록 하여, 본문에서 발생하는 변경 작업들이 원본 변수에 영향을 줍니다. 2. '값에 의한 전달'의 단점1. 비효율성: 큰 객체 혹은 struct를..
Hardii2
'분류 전체보기' 카테고리의 글 목록 (46 Page)