분류 전체보기 204

find

→ STL(Standard Template Library)에서 제공하는 std::find 함수는 지정된 값을 검색하여 해당 값이 컨테이너에서 처음 발견되는 위치를 찾는 함수이다. std::find 함수는 순차적으로 컨테이너를 탐색하면서 지정된 값과 일치하는 첫 번째 원소를 찾는다. std::find 함수는 두 개의 반복자를 인수로 받는다. 첫 번째 인수는 검색을 시작할 범위의 시작 반복자이고, 두 번째 인수는 검색을 종료할 범위의 끝 반복자이다. 여기서 범위는 검색을 수행할 컨테이너의 일부분이다. 범위는 반열린 구간으로 해석되며, 시작 반복자는 포함되고 끝 반복자는 제외된다. std::find 함수의 세 번째 인수는 찾을 값을 나타낸다. 이 값과 일치하는 첫 번째 원소를 찾는다. std::find 함수는..

vector max_element, min_element

→vector 컨테이너에서 최대값, 최소값을 구할 경우 for문을 작성할 수도 있지만 이는 복잡하다. 그래서 algorithm 라이브러리에 있는 max_element를 사용한다면 한줄로도 간단하게 최대값을 구할 수 있다. 또한 max_element를 사용하면 최대값의 인덱스 값도 구해낼 수 있다. 최소값을 구하기 위해서는 min_element를 사용한다. #include #include #include using namespace std; int main() { vector v; v.push_back(46); v.push_back(68); v.push_back(184); v.push_back(4); v.push_back(17); v.push_back(53); cout

list

list → C++의 std::list는 이중 연결 리스트를 구현한 컨테이너로, 데이터를 삽입, 삭제, 검색하는데 효율적이다. std::list는 벡터와는 달리 임의 접근이 느리지만, 원소를 삽입하거나 삭제하는데 있어서는 훨씬 효율적이다. 아래는 std::list를 사용하는 기본적인 방법이다. 헤더 파일 #include 리스트 선언 std::list myList; // int 형 리스트 선언 원소 추가 → push_back(): 리스트의 끝에 원소를 추가. → push_front(): 리스트의 시작에 원소를 추가. myList.push_back(10); myList.push_front(5); 원소 삭제 → pop_back(): 리스트의 끝에 있는 원소를 삭제. → pop_front(): 리스트의 시작에 ..

C++/C++ STL 2024.02.09

vector

vector 기본 사용법 → std::vector는 가변 크기의 배열을 나타내는 C++ 표준 라이브러리 컨테이너이다. 이는 배열과 유사하지만 크기를 동적으로 조정할 수 있는 장점을 가지고 있습니다. 아래는 std::vector를 사용하는 기본적인 방법이다. 헤더 파일 #include 벡터 선언 std::vector myVector; // int 형 벡터 선언 원소 추가 myVector.push_back(5); // 벡터 끝에 원소 추가 원소 접근 → [] 연산자를 사용하여 인덱스를 통해 원소에 접근. → at() 함수를 사용하여 범위 검사를 수행하면서 원소에 접근. int element = myVector[0]; // 첫 번째 원소에 접근 int element2 = myVector.at(1); // 두 ..

C++/C++ STL 2024.02.09

STL, 컨테이너, 반복자 개념

STL(Standard Template Library)이란? → 프로그램에 필요한 자료구조와 알고리즘을 Template로 제공하는 라이브러리 STL은 C++을 위한 라이브러리로 알고리즘, 컨테이너, 함수자, 반복자 4가지로 구성되어 있다. STL 의 구성요소 Container객체를 저장하는 객체, 자료구조 라고도 한다. 클래스 템플릿으로 구현되어있다.container는 크게 sequence container, associative container로 나뉜다. Sequence Container 의 종류 : array (C++ 11), vector, list, deque Associative Container 의 종류 : set, multiset, map, multimap Iterator포인터와 비슷한 개념..

C++/C++ STL 2024.02.09

ex02

이번에는 클래스 템플릿 Array를 구현하는 문제 차근차근 조건대로 해보자. 매개변수가 없는 구성: 빈 배열을 생성합니다. unsigned int n을 매개변수로 사용하여 생성: 기본적으로 초기화된 n개 요소의 배열을 생성합니다. 팁: int * a = new int(); 그런 다음 *a를 표시합니다. private: T *arr; unsigned int _len; 복사 및 할당 연산자에 의한 구성. 두 경우 모두 복사 후 원본 어레이나 복사본을 수정해도 다른 어레이에 영향을 주어서는 안 됩니다. Array(const Array &array) { this->arr = NULL; *this = array; } Array &operator=(const Array &array) { if (this == &ar..

ex00

들어가기 전 공부하고 가자! https://wo-dbs.tistory.com/172 C++ template(템플릿) → 템플릿은 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 것. 함수 템플릿(Function Template), 클래스 템플릿(Class Template)로 나뉜다. 좀 wo-dbs.tistory.com 이번 문제는 템플릿을 한 번 사용해보라는 문제이다. swap, min, max의 값을 구하는 템플릿 함수를 작성하면 된다. #ifndef WHATEVER_HPP # define WHATEVER_HPP template void swap(T &a, T &b) { T tmp = a; a = b; b = tmp; } template T mi..

C++ template(템플릿)

→ 템플릿은 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 것. 함수 템플릿(Function Template), 클래스 템플릿(Class Template)로 나뉜다. 좀 더 쉽게 템플릿을 설명한다면, 우리는 자료형이라는 게 있다. 이 자료형에 맞게 함수를 작성하거나 매개변수로 넘길 때도 자료형에 맞게 넘겨준다. 그런데 템플릿은 이 자료형을 전부 통합할 수 있다는 이야기이다. 템플릿은 컴파일 타임에 코드를 생성하기 때문에 런타임 오버헤드가 없다. 그러나 컴파일러가 템플릿 코드를 컴파일하는 동안 많은 코드가 생성될 수 있으므로 템플릿을 남용하면 컴파일 시간이 길어질 수 있다. 또한, 템플릿을 사용할 때 특정한 데이터 타입에 대해 원하는 동작을 보장하기..

C++/C++ template 2024.02.09

ex02

들어가기 전 dynamic_cast를 공부하고 가자 https://wo-dbs.tistory.com/168 dynamic_cast dynamic_cast는 주로 다형성(polymorphism)과 관련이 있다. 이 연산자는 런타임에 안전한 형변환을 수행한다. 즉, 동적으로 객체의 타입을 확인하고, 그 결과에 따라 적절한 형변환을 수행한다. 주로 상 wo-dbs.tistory.com ex02에서는 업캐스팅을 하는 문제이다. Base 클래스 A, B, C가 상속을 받으며 업캐스팅을 한다. #include "Base.hpp" #include "A.hpp" #include "B.hpp" #include "C.hpp" #include #include #include static Base* generate() { s..