카테고리 298

템플릿(template)

template**일반화 프로그래밍(generic programming)**을 구현할 수 있는 강력한 도구입니다. 이를 사용하면 데이터 타입에 의존하지 않는 코드를 작성할 수 있어 코드의 재사용성을 높일 수 있습니다. 템플릿의 기본 문법C++ 템플릿은 두 가지 주요 유형이 있습니다:1. 함수 템플릿template : 템플릿 선언부.T: 임의의 데이터 타입을 나타내며, 호출 시 구체적인 타입으로 대체됩니다.2. 클래스 템플릿template : 클래스의 데이터 타입을 일반화.Box와 같은 방식으로 구체적인 타입을 지정.템플릿을 사용할 때 고려해야 할 사항1. 다중 타입 지원 2. 기본 타입 제공템플릿 파라미터에 기본값을 설정할 수 있습니다.3. 특수화(Specialization)특정 타입에 대해 템플릿을 특..

이진트리 구현하기 - vector 사용

// binarytree.h #pragma once #include  #include  using namespace std; class BinaryTree { public: vector tree; // 새로운 값을 뒤에 추가함 void insert(int a) { tree.emplace_back(a); } // vec 안의 값을 순서대로 이진트리에 추가함 void insert_arr(vector vec) { for (const int& num : vec) { tree.emplace_back(num); // this -> insert(num); } } // indx번째 값을 구함 int at(int indx) { if (indx return tree[indx]; } return -1; } // 왼쪽 자식을..

tuple 문제 1 - 정수와 실수를 묶어 출력하는 튜플 사용 예제

해당 문제는 챗GPT로부터 나왔습니다. C++에서 튜플을 사용하는 간단한 문제를 드릴게요! 문제는 아래와 같습니다:문제:정수 3개와 실수 2개를 입력받아 튜플로 묶은 후, 그 튜플을 반환하는 함수를 작성하세요. 그 후, 튜플의 각 원소를 출력하세요.요구사항:정수 3개와 실수 2개를 입력받습니다.이를 튜플로 묶고, 반환합니다.반환된 튜플의 원소들을 하나씩 출력합니다. 밑에 드래그 하여 해결 방안을 확인하세요.#include  #include  using namespace std; tuple createTuple(int a, int b, int c, double d, double e) {     return make_tuple(a, b, c, d, e); } int main() {     int x, y, ..

유틸리티 클래스 - pair

pair두 개의 값(자료형이 동일할 필요 없음)을 하나의 객체로 묶어 저장할 수 있는 유틸리티 클래스입니다. 주로 함수 반환값으로 두 개의 관련된 값을 반환하거나, 연관된 데이터를 묶어서 표현하는 데 사용됩니다. std::pair의 확장된 형태도 있습니다. 유틸리티 클래스 std::tuple에 대해 아래 글에서 확인하세요.https://coding-potato-record.tistory.com/274 유틸리티 클래스 - tupletuple서로 다른 데이터 타입의 여러 값을 하나의 객체로 묶어 저장할 수 있는 유틸리티 클래스입니다. pair의 확장 버전으로, 두 개 이상의 값을 저장할 수 있으며, 값의 순서와 개수를 고정합니다.coding-potato-record.tistory.com1. Pair의 특징두..

유틸리티 클래스 - tuple

tuple서로 다른 데이터 타입의 여러 값을 하나의 객체로 묶어 저장할 수 있는 유틸리티 클래스입니다. pair의 확장 버전으로, 두 개 이상의 값을 저장할 수 있으며, 값의 순서와 개수를 고정합니다.1. Tuple의 특징다수의 값 저장: 임의의 데이터 타입을 조합하여 여러 값을 하나로 묶음.템플릿 클래스: 데이터 타입과 개수를 컴파일 시간에 지정.인덱스 기반 접근: 요소에 std::get()로 접근.비교 연산 가능: 사전순 비교 연산(==, , 등)을 지원.구조 분해 할당 지원: C++17부터 구조 분해를 통해 각 요소를 개별 변수로 바로 할당 가능.2. 필요 헤더파일std::tuple를 사용하려면  헤더 파일을 포함해야 합니다.3. 사용 예제4. 주요 함수함수설명예제std::tuple()빈 tuple..

반복자(iterator)에 대해

iteratorC++에서 컨테이너(예: std::vector, std::list, std::map 등) 내부의 요소들을 순차적으로 접근하고 조작하기 위해 사용하는 객체입니다. 반복자는 포인터와 유사하게 동작하지만, 컨테이너의 종류에 맞춰 다양한 기능과 동작을 제공합니다.반복자 기본 개념반복자는 다음과 같은 작업을 수행할 수 있는 객체입니다:값에 접근: 반복자는 컨테이너의 요소를 가리키며, *it처럼 * 연산자를 사용해 요소의 값을 접근할 수 있습니다.이동: 반복자는 ++ (다음 요소로 이동) 및 -- (이전 요소로 이동) 연산자를 지원합니다.비교: 반복자는 == 및 != 연산자를 사용해 서로 비교할 수 있습니다.반복자 사용 예시C++에서 벡터에 대해 반복자를 사용하는 예시를 보여드리겠습니다.  선언할 때..

auto 키워드

auto자동 타입 추론을 위한 키워드로, 변수 선언 시 타입을 자동으로 추론하도록 하는 기능을 제공합니다. 즉, 변수의 타입을 명시적으로 지정하지 않고, 컴파일러가 초기화된 값을 보고 해당 타입을 자동으로 결정하게 해주는 키워드입니다. 예시위 코드에서 y는 auto를 사용했기 때문에, x의 타입인 int로 자동으로 추론됩니다. auto를 사용하는 이유타입을 명시적으로 작성할 필요 없이 컴파일러가 자동으로 타입을 추론해 줍니다.타입이 복잡할 때 유용합니다. 예를 들어, 반복자나 템플릿 타입을 사용할 때 반복자 타입을 명시적으로 작성하지 않고 auto로 간단히 처리할 수 있습니다.코드를 간결하고 읽기 쉽게 만들어 줍니다.결론auto는 타입을 자동으로 추론해주는 키워드로, 타입을 명시하지 않고 변수를 선언할 ..

C++ 2025.01.08

STL 컨테이너 종류

C++ 표준 라이브러리(STL, Standard Template Library)에는 다양한 컨테이너가 제공됩니다. 이들은 데이터를 저장하고 조작하기 위한 다양한 자료구조를 추상화한 도구입니다. 컨테이너는 크게 순차 컨테이너, 연관 컨테이너, 그리고 어댑터 컨테이너로 나눌 수 있습니다.컨테이너 종류특징순차 컨테이너데이터가 순차적으로 저장되며, 인덱스를 통한 순차적 접근이 가능.std::vector동적 배열, 임의 접근 빠름, 중간 삽입/삭제는 느림.std::deque더블 엔디드 큐, 양쪽 끝에서 삽입/삭제가 빠름.std::list양방향 연결 리스트, 삽입/삭제가 빠르나 임의 접근은 느림.std::array고정 크기 배열, 메모리 관리가 효율적, 임의 접근 빠름.std::forward_list단방향 연결 리..

자료구조 구현하기(C++) - 해시 테이블

C++에서는 STL(Standard Template Library)을 사용해 해시 테이블을 구현할 때 std::unordered_map 또는 std::unordered_set을 사용하면 됩니다. 이 두 컨테이너는 내부적으로 해시 테이블을 사용해 데이터를 저장하고 검색합니다. STL 컨테이너 - unordered_map 관련 글https://coding-potato-record.tistory.com/268STL 컨테이너 - unordered_set 관련 글https://coding-potato-record.tistory.com/269std::unordered_map을 사용한 해시 테이블 예시주요 설명std::unordered_map 사용std::unordered_map은 키와 값을 저장하며, 키를 기반으로..

STL 컨테이너 - unordered_set

unordered_setC++ STL에서 제공하는 컨테이너 중 하나로, 해시 기반으로 요소를 저장하는 집합입니다. std::set과 달리 요소를 정렬된 상태로 유지하지 않으며, 요소의 저장 순서가 일정하지 않습니다. 그러나 중복 요소를 허용하지 않는 집합의 성질은 std::set과 동일합니다.0. std::set과 std::unordered_set의 차이점std::set과 std::unordered_set의 차이점을 표로 정리하면 다음과 같습니다. 두 컨테이너는 모두 키-값 쌍을 저장하는 연관 컨테이너지만, 그 내부 동작 방식에 큰 차이가 있습니다.특성std::setstd::unordered_set정렬원소가 자동으로 오름차순으로 정렬됨원소의 순서가 정해져 있지 않음 (해시 값에 따라 순서가 결정됨)구현 ..