Program Language/C++ 언어 16

16. C++ STL 알고리즘, 입력과 출력, 예외 처리

함수 객체함수 객체(function object)- STL 알고리즘에 데이터를 전달하기 위해서는 다음과 같은 방법을 사용합니다.    1. 함수 포인터   2. 함수 객체   3. 람다 표현식 - 많은 STL 알고리즘이 데이터를 처리하기 위해 매개변수로 함수 객체를 받아들입니다.- 펑크터(functor)라고도 불리는 함수 객체는 호출 연산자(())와 함께 사용할 수 있는 객체를 의미합니다.- 이러한 함수 객체는 우선 타입을 선언하고, 해당 클래스에서 호출 연산자(())를 오버로딩하여 구현하게 됩니다. 함수 객체의 장점직접적인 함수 호출과 비교하여 함수 객체를 사용하면 다음과 같은 장점을 가집니다.  1. 함수 객체는 상태(state)를 포함할 수 있습니다. 2. 함수 객체는 타입이므로, 템플릿 인수로 사..

15. C++ STL 컨테이너 : 시퀀스 컨테이너, 연관 컨테이너, 컨테이너 어댑터

컨테이너(container) - STL에서 컨테이너(container)는 같은 타입의 여러 객체를 저장하는 일종의 집합이라 할 수 있습니다. - 컨테이너는 클래스 템플릿으로, 컨테이너 변수를 선언할 때 컨테이너에 포함할 요소의 타입을 명시할 수 있습니다. - 컨테이너에는 복사 생성과 대입을 할 수 있는 타입의 객체만을 저장할 수 있습니다. 컨테이너의 종류 - STL에서 컨테이너는 자료를 저장하는 방식과 관리하는 방식에 따라 여러 가지 형태로 나뉠 수 있습니다. - STL 컨테이너는 크게 다음과 같이 세 가지 유형으로 구분됩니다.   1. 시퀀스 컨테이너(sequence container)  2. 연관 컨테이너(associative container)  3. 컨테이너 어댑터(adapter container..

14. C++ STL 반복자

STL, Standard Template Libarary- STL은 표준 템플릿 라이브러리의 약자로, C++에서 미리 만들어진 템플릿을 이용하기 위해 불러와 사용하는 라이브러리입니다.  STL 의 구성 요소-  C++ 표준 템플릿 라이브러리인 STL은 다음과 같은 구성 요소로 이루어진 템플릿을 제공합니다.반복자 (iterator)컨테이너 (container)알고리즘 (algorithm)  STL 반복자- 반복자는 컨테이너의 요소를 순회하는 객체입니다.- 마치 포인터처럼 동작하며, 요소에 접근하거나 조작할 수 있습니다. - 반복자의 종류 - STL은 제공하는 기능에 따라 반복자를 다음과 같이 다섯 가지로 분류하고 있습니다. 1. 입력 반복자(input iterator) - 가장 단순한 형태의 반복자로, 컨..

13. C++ OOP 개념 이해하기 : 캡슐화, 상속성, 다형성

C++의 OOP 개념 이해하기 : 캡슐화, 상속성, 다형성- C++은 강력한 객체 지향 프로그래밍(OOP) 언어로, 모듈화 및 재사용 가능한 코드를 작성하는 데 큰 도움을 줍니다.  OOP 캡슐화- 캡슐화  : 데이터와 메서드를 하나의 단위로 묶는 방법입니다.   클래스 내부의 데이터 멤버를 private으로 선언하고, public 메서드를 통해 접근하도록 설계하여 데이터의 무결성을 유   지 합니다.   이렇게 하면 외부에서 객체의 내부 구조를 직접 변경할 수 없으므로 안정성이 높아집니다. - 프렌드 함수 : 클래스의 비공개 멤버에 접근할 수 있는 특수한 함수로, 클래스 내부 구현에 직접 접근할 필요가 있을 때 유용합니다. - 정적 멤버 : 클래스의 모든 객체가 공유하는 멤버입니다. 클래스 내에 선언되..

12. C++ 생성자와 소멸자, 연산자 오버로딩

C++ 생성자와 소멸자, 연산자 오버로딩 생성자- 정의 : 생성자는 클래스의 특별한 멤버 함수로, 객체를 초기화하는 역할을 합니다.- 문법 :class ClassName { public: ClassName(parameters); }; - 예제:class Book { public: Book(const string& title, int total_page); private: string title_; int total_page_; int current_page_; double percent_; void set_percent(); }; Book::Book(const string& title, int total_page) { title_ = title; ..

11. C++ 함수의 범위와 클래스

C++ 함수와 범위에 대한 이해- C++ 프로그래밍 언어는 강력한 기능을 제공하며, 그 중 함수와 범위는 핵심적인 개념입니다.- 이를 통해 코드의 가독성과 유지보수성을 높일 수 있는 방법을 배울 수 있습니다. 함수 선언과 정의- C++에서 함수는 프로그램의 여러 부분에서 반복적으로 사용할 수 있는 코드 블록입니다. 함수는 선언과 정의로 나뉩니다. 선언은 함수의 이름과 매개변수를 명시하고, 정의는 실제 함수의 동작을 구현합니다.// 함수 선언int add(int a, int b);// 함수 정의int add(int a, int b) { return a + b;}함수 참조- 함수 참조는 함수가 정의된 위치와 다른 곳에서 그 함수를 사용할 수 있게 해줍니다. 이는 코드의 재사용성을 높여주며, 모듈화된 프..

10. C++ 함수의 기본

C++ 함수의 기본- C++ 함수는 프로그램의 특정 작업을 수행하는 코드 블록입니다.- 함수는 코드의 재사용성을 높이고 가독성을 향상시킵니다.  함수의 정의와 호출- C++에서 함수는 다음과 같은 구조로 정의됩니다: 반환형 함수명(매개변수) { // 함수 본문 return 값; // 반환형이 void인 경우 생략 가능 }// 예를 들어, 두 수를 더하는 함수를 정의해보겠습니다:int add(int a, int b) { return a + b; }// 위의 add 함수는 두 개의 정수를 받아 그 합을 반환합니다. 함수는 다음과 같이 호출됩니다:int result = add(3, 4); // result는 7 매개변수 전달 방법- 매개변수를 전달하는 방법에는 값에 의한 호출(Call b..

09. C++ 구조체의 기본과 활용

C++ 구조체: 기본과 활용- C++의 구조체(struct)는 여러 데이터를 하나의 단위로 묶어주는 사용자 정의 데이터 타입입니다.- 구조체는 연관된 데이터를 하나의 그룹으로 관리할 수 있도록 도와줍니다.  구조체의 기본 개념struct 구조체명 { 데이터타입 변수명1; 데이터타입 변수명2; // 추가 멤버 변수 };struct Student { std::string name; int age; double grade; }; 위 코드에서 Student라는 구조체는 학생의 이름, 나이, 성적을 저장하는 세 개의 멤버 변수를 포함하고 있습니다. 구조체 변수 선언과 초기화- 구조체를 정의한 후에는 구조체 변수를 선언하고 초기화할 수 있습니다.- 다음은 Student 구조체 변수를 선언하고 초기화하는 예제입니..

08. C++ string 클래스와 메소드

C++에서의 문자열 처리: string 클래스의 이해 C++ 프로그래밍 언어는 문자열을 다루기 위해 두 가지 방법을 제공합니다 : 전통적인 C언어 스타일의 문자형 배열과 C++에 새롭게 도입된 string 클래스입니다. 이번 포스트에서는 후자인 string 클래스에 초점을 맞춰 보겠습니다. string 클래스의 기본 string 클래스는 문자열을 보다 편리하게 다룰 수 있도록 해주는 C++의 표준 라이브러리 컴포넌트입니다. 이를 사용하기 위해서는 먼저 #include 을 통해 헤더 파일을 포함시켜야 하며, std 네임스페이스를 명시해야 합니다. string 클래스는 문자형 배열보다 사용하기 편리하며, 다음과 같은 방식으로 문자열의 선언 및 초기화가 가능합니다: #include #include using ..

07. C++ 배열과 포인터 - 포인터의 연산과 동적 할당 메모리

포인터 연산 - 포인터는 값을 증가시키거나 감소시키는 등의 제한된 연산만을 할 수 있습니다. - C++의 포인터 연산의 규칙 포인터끼리의 덧셈, 곱셈, 나눗셈은 아무런 의미가 없습니다. 포인터끼리의 뺄셈은 두 포인터 사이의 상대적 거리를 나타냅니다. 포인터에 정수를 더하거나 뺄 수는 있지만, 실수와의 연산은 허용되지 않습니다. 포인터끼리 대입하거나 비교할 수 있습니다. 타입별 포인터 연산 - C++의 포인터 연산에서 포인터 연산은 연산 후 각각의 포인터가 가리키고 있는 주소는 포인터의 타입에 따라 달라집니다. - 그 증가 폭, 감소 폭은 포인터가 가리키는 변수의 타입의 크기와 같습니다. 포인터와 배열의 관계 - 포인터와 배열을 매우 긴밀한 관계를 맺고 있으며, 배열의 이름은 포인터와 같습니다. - C++..