본문 바로가기

C++10

sort func ex1 3개의 멤버변수 정렬. 3개의 멤버변수를 갖는 구조체가 있다. 각 변수 x, y, z는 int 타입이며, 정렬 시 다음 조건을 만족한다. 1. x는 1순위 오름차순 2. y는 2순위 내림차순 3. z는 3순위 오름차순. 우선 구조체를 정의한다. struct Triangle{ int x,y,z; Triangle(int x, int y, int z) : x(x), y(y), z(z){} Triangle(){ x = 0, y =0 , z=0; } bool operator t.y; } return x < t.x; } }; 테스트를 위해 main 함수 내부에서 s.. 2023. 6. 25.
pair, tuple pair와 tuple은 타입이나 자료구조가 아니다. 이는 utility 라이브러리 헤더의 템플릿 클래스입니다. C++에서 `pair`와 `tuple`은 두 가지 다른 데이터 구조로, 서로 다른 용도와 특징을 가지고 있습니다. pair - pair는 두 개의 요소를 담는 데이터 구조입니다. 각 요소는 서로 다른 자료형일 수 있습니다. - std::pair 템플릿 클래스로 제공되며, `` 헤더 파일에 정의되어 있습니다. - 주로 두 개의 값을 하나로 묶어야 할 때 사용됩니다. 예를 들어, 키-값 쌍이나 두 개의 연관된 데이터를 표현할 때 유용합니다. - 요소는 .first와 .second 멤버로 접근할 수 있습니다. 예를 들어, `myPair.first`는 첫 번째 요소에 접근하고, `myPair.secon.. 2023. 6. 24.
문자열 숫자 변환 입력받은 문자열 기반으로 문자형 타입이 숫자의 형식을 가지고 있는지 판별할 필요가 있다. 함수 `atoi`는 C++에서 C 언어의 표준 라이브러리 함수로서, 문자열을 정수로 변환하는 역할을 합니다. C++에서 `atoi` 함수를 사용하려면 `` 헤더 파일을 포함해야 합니다. `atoi` 함수의 시그니처는 다음과 같습니다: int atoi(const char* str); - 반환값: `atoi` 함수는 변환된 정수 값을 반환합니다. 문자열이 유효한 정수로 변환되지 않을 경우 0을 반환합니다. - 파라미터 종류: `atoi` 함수는 단일 파라미터로 문자열의 포인터(`const char*`)를 받습니다. 이 문자열은 정수로 변환될 수 있는 형태여야 합니다. 주의할 점은 `atoi` 함수는 변환할 수 없는 문자.. 2023. 6. 24.
STL Standard Template Library, 자료구조, 함수, 알고리즘과 같은 함수를 포함한 라이브러리이다. 알고리즘에서는 정렬, 탐색과 같은 함수로 이루어져 있다. C++에서 컨테이너는 사전에 정의된 자료구조를 이야기 한다. Sequence Container : 데이터를 단순히 저장해 놓는 자료구조를 뜻한다. array, vector, deque, forward_list, list ,, associative container : 자료가 저장되면서 자동으로 정렬되는 자료구조를 말합니다. unordered associative container : 자동정렬이 되지 않는 자료구조. container adapter : 시퀀스 컨테이너를 이용해 만든 자료구조를 뜻한다. 기본적으로 어느정도의 자료구조는 지원해.. 2023. 6. 23.
템플릿 템플릿은 보관할 자료형을 인수로 하여 컨테이너 클래스나 함수를 생성할 수 있게 함으로써 개별적 자료형 각각에 대해 프로그램을 중복적으로 작성하는 노력을 줄일 수 있게 한다. 컨테이너 클래스란 다른 객체를 저장하는 클래스로서, 예를 들어 스택, 큐, 배열, 리스트 등을 들 수 있다. 그러나 동일한 유형의 컨테이너일지라도 저장하고자 하는 객체의 유형이 다르면 이에 맞게 새로운 클래스를 선언해야 한다. 이러한 코드 중복을 방지할 수 있는 방법을 템플릿이라 한다. 템플릿은 클래스를 선언할 때 객체의 자료형을 고려하지 않고, 객체의 자료형을 인수로 처리한다. 컨테이너 클래스를 선언할 때 특정 자료형이 아닌 일반적인 자료형을 대상으로 하는 템플릿을 작성한다. 특정 자료형을 위한 컨테이너 객체가 필요할 때 그 자료형.. 2020. 11. 12.
추상 클래스 계층구조를 갖는 객체들을 클래스로 표현할 때 실제로 객체가 존재하지 않는 추상적인 개념에 대한 클래스가 필요한 경우가 있다. 클래스 계층구조를 설계할 때 상위 계층 클래스는 일반적인 데이터 멤버와 멤버 함수를 포함하도록 하고, 하위 계층 클래스는 상위 계층의 클래스가 가지고 있는 데이터 멤버와 멤버 함수 외에 그 클래스에 필요한 고유한 데이터 멤버와 멤버 함수를 포함한다. 그리고 동일한 개념의 동작을 정의한 멤버 함수이지만 객체가 속한 클래스에 따라 고유한 동작을 할 수 있어야 하는 경우 오버 라이딩을 통해 가상 함수를 사용한다. 그런데 기초 클래스에서 이러한 가상함수를 만들 때 몸체가 없이 선언만 할 수 있다. 이처럼 몸체가 없는 가상 함수를 순수 가상 함수라 한다. 순사 가상 함수를 선언하는 문장은 .. 2020. 11. 12.
상속 객체지향 언어에서 상속은 계층 관계를 사용하여 클래스 간의 속성 및 함수를 공유할 수 있도록 지원하는 중요한 개념이다. 하나의 클래스에서 파생된 클래스들은 상위 클래스의 같은 개념을 가지고 확장된 클래스라 할 수 있으며 이렇게 분할된 클래스를 파생 클래스라고 한다. 파생 클래스의 상위 개념의 클래스들은 기초 클래스라고 한다. c++에서 파생 클래스를 선언하는 방법은 다음과 같다. class DClassName : visivilitySpec BClassName{ visibilitySpec_1: 데이터 멤버 또는 멤버함수 리스트; } *DClassName : 파생 클래스 이름 *BClassName : 기초 클래스 이름 *visibilitySpec : 가시성 지시어 -> public,protected,priv.. 2020. 11. 12.
연산자 다중정의 c++ 언어에는 기본 자료형에 대한 여러 가지 연산자가 정의되어 있다. 그러나 사용자가 정의한 자료형이나 클래스에 대한 경우는 연산자가 정의되어 있지 않는데 연산자 다중 정의는 c++언어에 정의되어 있는 연산자들을 사용자가 선언한 클래스에서 사용할 수 있도록 정의한다. 1. 단항 연산자의 다중 정의 단항 연산자는 피연산자를 하나만 갖는 연산자로서, ++나 --와 같은 연산자가 그 예시가 될 수 있다. 단항 연산자는 연산자가 피연산자 앞에 있는 것과 뒤에 있는 것이 있는데, 연산자를 앞에 사용하는 것을 전위 표기법이라 하고, 연산자가 뒤에 위치하고 있는 것을 후위 표기법이라고 한다. 단항 연산자는 전위, 후위 표기법에 따라 결과가 다르기에 구분하여 작성하는 것이 중요하다. 1) 전위 표기법 다음은 전위 표.. 2020. 11. 10.
함수 모든 프로그램은 최소한 1개의 함수로 구성된다. 여기서 함수란 필요한 작업을 수행하는 프로그램 문장들을 하나의 단위로 모아 놓고, 이에 이름을 부여한 것이다. 이렇게 정의하여 놓은 함수는 프로그램의 다른 부분에서 필요할 때 호출하여 사용할 수 있다. 함수를 호출할 때에는 함수가 필요로 하는 데이터 또는 객체를 인수로 전달하여야 하며, 함수는 정의된 처리를 한 후 필요하면 그 결과를 호출한 문장으로 되돌려 준다. 하나의 함수에서는 고유한 기능만을 수행하는 것이 바람직하며, 그 이유는 기존의 프로그래밍 기법에서 프로그램을 간결하고 유지/보수하기 쉽도록 만들기 위해 사용되고 있다. 객체지향 프로그래밍에서는 이러한 목적과 함께 객체가 메시지를 처리하는 메서드를 구현하기 위한 방법으로 함수를 사용한다. 함수를 c.. 2020. 11. 8.
구조체와 클래스 구조체 int, float 등과 같은 자료형은 미리 정의되어 있는 기본 자료형이다. 별개로 프로그래머가 필요에 따라 새로운 자료형을 정의할 수 있는데 이와 같은 자료형을 사용자 자료형이라고 한다. 기본 문법 struct StructName{ Type1 item1; Type2 item2; }; 이 선언문은 StructName이라는 이름을 같은 새로운 자료형을 정의한 것으로 item1, item 2의 항목으로 구성되어 있다. 이와 같이 사용자가 정의한 자료형을 c++에서는 구조체(structure)라고 하며, 일반적으로는 레코드(record)라고 한다. 클래스 구조체는 프로그램으로 표현하고자 하는 대상에 대한 데이터의 구조만을 정의하고 있다. 데이터만이 존재하는 것이 아니라 그 대생에 대해 행할 수 있는 여.. 2020. 11. 8.