반응형

C, C++ & Linux/C++ 7

[C++] STL - next_permutation

next_permutation C++의 algorithm 헤더에 존재하는 next_permutation은 컨테이너에서 만들 수 있는 다음 순열을 반환하는 STL이다. next_permutation 이용한 순열 구하기 int main() { int n, k; cin >> n >> k; // n개의 원소 중 k개 나열하는 순열 vector v; for(int i = 0; i > x; v.push_back(x); } sort(v.begin(), v.end()); // 오름차순 정렬이 되어있어야함 do { for(int i = 0; i k; // n개의 원소 중 k개 선택하는 조합 vector v; for(int i = 0; i < n; ..

C, C++ & Linux/C++ 2022.08.01

[C++] STL - pair, tuple

pair pair는 지정한 2개의 타입의 데이터를 저장하는데 사용한다. 이를 통해 서로 연관된 2개의 데이터를 한 쌍으로 묶어서 다룰 수 있다. pair는 헤더파일에 존재하며 과 헤더파일에 가 포함되기 때문에 셋 중 하나를 사용할 수 있다. make_pair() 함수를 통해 pair 객체를 만들 수 있고 각각 first와 second를 통해 첫번째, 두번째 데이터에 접근할 수 있다. #include #include #include #include using namespace std; int main(){ pair p; p = make_pair(10, 20); cout

C, C++ & Linux/C++ 2022.07.01

[C++] STL - list

list 앞서 봤던 벡터와 덱이 배열 기반 시퀀스 컨테이너였다면 리스트는 노드 기반 이중 연결 리스트로 구현된 시퀀스 컨테이너이다. 따라서 벡터, 덱과 달리 임의의 위치에 있는 원소에 바로 접근할 수 없고 반복자를 통해 순차적으로 접근할 수 밖에 없다는 단점이 존재한다. ※ 리스트의 반복자 리스트의 반복자의 경우 순차적인 작업밖에 수행하지 못하기 때문에 ++, -- 와 같은 연산만 수행할 수 있다. 즉, itr + 5 와 같은 연산은 불가능하다. 하지만 벡터와 덱에서 O(n) 이었던 임의의 위치에 원소 추가 / 제거하는 작업을 O(1)에 수행할 수 있다는 장점이 있다. 리스트의 경우 원하는 위치의 앞과 뒤에 있는 링크값만 바꾸어주면 되기 때문이다. 임의의 위치 원소 접근 순차탐색만 지원 O(n) 맨 앞에..

C, C++ & Linux/C++ 2022.06.29

[C++] STL - vector

STL이란? C++에서 STL이란 Standard Template Library의 약자로 표준 템플릿 라이브러리를 의미한다. C++에는 많은 표준 라이브러리들이 있지만 보통 STL을 말할때는 다음 세개의 라이브러리들을 의미한다. 임의 타입의 객체를 보관할 수 있는 컨테이너(container) 컨테이너에 보관된 원소에 접근할 수 있는 반복자(iterator) 반복자들을 가지고 일련의 작업을 수행하는 알고리즘(algorithm) 그 중 컨테이너는 크게 두 가지 종류로 나눌 수 있다. 먼저 배열과 같이 객체들을 순차적으로 보관하는 시퀀스 컨테이너가 있고 key를 통해 대응되는 값을 찾아주는 연관 컨테이너가 있다. 시퀀스 컨테이너에는 다음과 같이 3개가 존재한다. vector list deque 오늘 포스팅에서..

C, C++ & Linux/C++ 2022.06.29
반응형