본문 바로가기
C++

STL

by oncerun 2023. 6. 23.
반응형

Standard Template Library, 자료구조, 함수, 알고리즘과 같은 함수를 포함한 라이브러리이다. 

 

알고리즘에서는 정렬, 탐색과 같은 함수로 이루어져 있다. 

 

C++에서 컨테이너는 사전에 정의된 자료구조를 이야기 한다. 

 

Sequence Container : 데이터를 단순히 저장해 놓는 자료구조를 뜻한다. array, vector, deque, forward_list, list  ,,

 

associative container : 자료가 저장되면서 자동으로 정렬되는 자료구조를 말합니다. 

unordered associative container : 자동정렬이 되지 않는 자료구조. 

 

container adapter : 시퀀스 컨테이너를 이용해 만든 자료구조를 뜻한다.

 

 

기본적으로 어느정도의 자료구조는 지원해주는 것 같다. 확실히 나중에 더 찾아보긴 해야할 것 같다.

 

C++에서 이터레이터(Iterator)와 펑터(Functor)는 각각 다음과 같은 역할을 수행하는 개념입니다.

1. 이터레이터 (Iterator):
   이터레이터는 컨테이너(예: 배열, 리스트, 집합 등)에 저장된 요소를 순차적으로 접근하는 방법을 제공하는 객체입니다. 이터레이터를 사용하면 컨테이너의 요소를 반복하면서 처리할 수 있습니다. 이터레이터는 C++ 표준 라이브러리에서 제공되는 다양한 컨테이너 클래스(예: vector, list, set, map 등)에 대해 일반화된 방법으로 접근할 수 있도록 해줍니다.

   이터레이터는 일반적으로 반복문과 함께 사용됩니다. 반복문에서 이터레이터를 사용하여 컨테이너의 요소를 하나씩 가져와 처리할 수 있습니다. 다음은 간단한 예시 코드입니다:

   #include <iostream>
   #include <vector>

   int main() {
       std::vector<int> numbers = {1, 2, 3, 4, 5};

       // 벡터의 요소를 출력하기 위해 이터레이터 사용
       for (std::vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {
           std::cout << *it << " ";
       }

       return 0;
   }



   위의 예시에서 `numbers.begin()`은 첫 번째 요소를 가리키는 이터레이터를 반환하고, `numbers.end()`는 마지막 요소의 다음을 가리키는 이터레이터를 반환합니다. 이렇게 반환된 이터레이터들을 사용하여 벡터의 요소에 접근하고 출력합니다.

2. 펑터 (Functor):
   펑터는 함수처럼 동작하는 객체를 의미합니다. 함수 객체(Function Object)라고도 불리며, 일반 함수와 달리 객체로서 상태를 유지할 수 있습니다. 펑터는 함수 호출 연산자(`operator()`)를 오버로딩하여 사용되며, 이를 통해 펑터 객체를 함수처럼 호출할 수 있습니다.

   펑터를 사용하면 함수처럼 동작하는 객체를 다른 함수에 인자로 전달하거나, 알고리즘과 함께 사용하여 특정 작업을 수행할 수 있습니다. 다음은 펑터를 사용한 간단한 예시 코드입니다:

   #include <iostream>

   // 덧셈을 수행하는 펑터
   struct AddFunctor {
       int operator()(int a, int b) {
           return a + b;
       }
   };

   int main() {
       AddFunctor add;

       int result = add(3, 4);  // 펑터 객체를 함수처럼 호출

       std::cout << "Result: " << result << std::endl;

       return 0;
   }



   위의 예시에서 `AddFunctor`는 덧셈을 수행하는 펑터로, `operator()` 함수를 오버로딩하여 덧셈 연산을 정의합니다. `add` 객체를 함수처럼 호출하면 `operator()` 함수가 실행되어 덧셈이 수행되고, 그 결과가 반환됩니다.

   펑터는 일반 함수와 달리 상태를 유지할 수 있기 때문에 특정 상황에 따라 다른 동작을 수행하거나 상태를 조작하는 등의 유연한 기능을 구현할 수 있습니다. 

 

 

반응형

'C++' 카테고리의 다른 글

pair, tuple  (0) 2023.06.24
문자열 숫자 변환  (0) 2023.06.24
템플릿  (0) 2020.11.12
추상 클래스  (0) 2020.11.12
상속  (0) 2020.11.12

댓글