본문 바로가기
728x90

C++/라이브러리 (STL etc)14

[STL] 순열과 조합, next_permutation #include // next_permutation 기본 형식 int a[3] = {1,2,3} do{ for(int i=0; i 2023. 10. 8.
[c++] Tuple 사용법 여러 자료형을 묶어서 사용할 수 있음. #include tuple t(1, 'a', "abcd"); pair는 2쌍까지만 가능하지만, tuple은 여러 쌍 가능. 그렇지만, 같은 자료형을 사용하는 것을 추천. 3쌍 이상 묶어야 할 때 사용. 예를 들어, 큐에 3차원 좌표를 쌓을 때. 1. Tuple 선언 및 초기화 2. Tuple 원소 접근 3. Tuple 원소분해 4. 두 개의 튜플 연결 5. Tuple swap 2023. 7. 28.
[c++] 3차원 배열(백터) 선언 및 초기화 3차원 배열을 선언하는 2가지 방법에 대해서 소개합니다. 1. 기본 배열로 선언 및 초기화 2. vector를 이용한 선언 및 초기화 1. 기본 배열로 선언 및 초기화 fill(arr[i], arr[i] + column, value) : i번째 행마다 column까지의 원소에 value를 할당함 2. vector를 이용한 선언 및 초기화 (M,N,H) 형태의 3차원 벡터 생성함. vector안에 또 다른 벡터를 선언하고 이를 높이(H)만큼 선언 초기값은 0으로 할당되며, 원할시 값을 할당할 수 있음. fill()을 사용해서도 초기화가 가능하다. 함수로 넘길시 vector를 복사할 것인지, 주소만 넘길 것인지 생각해야 함. 벡터의 가장 큰 장점은 공간을 미리 할당하지 않아도 됨. 입력받은 공간 크기만큼 할.. 2023. 7. 27.
[c++] 반복문 iterator처럼 사용하기. 2023. 7. 26.
[c++] vector 입력 1. vector 초기화 안했을 시 push_back()으로 입력해야 함. v[i]처럼 인덱스로 입력 안됨. 2. vector 초기화 시 v[i] 처럼 인덱스로 접근하여 입력 가능 2023. 7. 25.
[c++] 2차원 배열(벡터) 선언 및 초기화 2차원 배열을 선언하는 2가지 방법에 대해서 소개합니다. 1. 기본 배열로 선언 및 초기화 2. vector를 이용한 선언 및 초기화 1. 기본 배열로 선언 및 초기화 행과 열의 사이즈를 전역 상수 const로 할당 change_arr()함수 인자로 넘겨줄 시 사용 가능한 foramt을 보여줌 함수 내에서 값 변경시, 원본 값도 변경됨 모든 배열 값들을 특정 값으로 할당하기 위해서는, 1) 이중 반복문 2) fill() 이용 fill(arr[i], arr[i] + column, value) : i번째 행마다 column까지의 원소에 value를 할당함 2. vector를 이용한 선언 및 초기화 vector v(n, vector(m)) : (n,m)형태의 벡터 생성됨 vector안에 또 다른 벡터를 선언하.. 2023. 7. 25.
[c++] 1차원 배열(벡터) 선언 및 초기화 방법 1차원 배열을 선언하는 2가지 방법에 대해서 소개합니다. 1. 기본 배열로 선언 및 초기화 2. vector를 이용한 선언 및 초기화 1. 기본 배열로 선언 및 초기화 배열 선언시, const로 미리 지정된 size만큼 선언합니다. 여기서 "size"라는 이름으로는 할당이 안됨. void change_arr_value() 함수에서 배열은 arr[] or *arr2 형태 모두 동일하게 주소를 받아 원본 배열 값에 접근, 값 변경 가능. 배열의 모든 값을 특정 값으로 초기화 하는 방법은 2가지가 있음. 1) 반복문으로 일일이 값 할당 2) fill()을 이용한 할당. (동작은 동일하겠지만 간편히 한 줄로 작성 가능) 2. vector를 이용한 선언 및 초기화 #include를 통해 컨테이너를 불러옴. vec.. 2023. 7. 25.
[c++] <STL> pair 사용법 pair는 두 종류의 데이터 타입을 하나로 묶어, 한번에 전달 할 수 있음 서로 연관된 2개의 데이터를 한 쌍으로 묶어서 처리할 때 편리하다. 아래와 같이 여러 데이터 타입을 묶어서 사용할 수 있음, queue 또는 vector 등과 같은 컨테이너와도 유용하게 같이 사용할 수 있음. 2023. 7. 24.
[c++] cin.getline() vs getline() 및 cin.ignore() 정리 1. cin.getline(char 배열, 넣을 문자수) 넣을 문자 수만큼만 char 배열에 저장한다. 저장은 각각의 알파벳이 원소 하나하나에 할당됨. 공백도 같이 저장한다. (cin >> 은 공백 전까지 장, cin.getline()은 공백 포함 개행문자 전까지 저장) # 넣을 문자 만큼 받는다. 2. getline(cin, string) from #include getline()은 string에 정의되어 있으며, string 형의 문자열 저장. # getline(cin, string, ‘특정문자’) : 특정문자 전까지의 문자열을 받는다. ※ 주의사항, cin.ignore() 일반적인 cin >> a;와 같이 입력 받고, getline() 혹은 cin.getline()을 사용할 시에는 재대로 동작하지 .. 2023. 7. 14.
[c++] 큐, STL<queue> First in First out 맨 먼저 입력 받은 값을 내보내게 됨. head는 배열의 첫번째를 가르키고, tail은 배열의 마지막 +1을 가르킴(입력을 받을 곳) push : 배열의 tail에 입력, tail++ pop : 배열의 head를 출력, head++ pop을 한다고 해서 공간이 없어지는게 아닌 그대로 남아 있는 형태이기 때문에, 고정된 배열의 공간에서 pop을 수행한 메모리는 사용하지 못하게 된다. 이를 보완하기 위해 원형 queue 등이 있음. 2023. 7. 13.
[c++] 스택 - 일반구현 vs STL<stack> First in Last out 구조. Last out 원소를 가르키는 pos 필요, pop시 pos-- 1. 일반구현 2. STL stack https://github.com/intlabSeJun/c-plus-coding-test/tree/master/5.%20%EC%8A%A4%ED%83%9D 2023. 7. 13.
[c++] iterator에 대해서 1) 컨테이너에 저장되어 있는 원소들을 참조할 때 사용 2) 추장적으로, 컨테이너의 모든 원소들을 볼 수 있는 포인터와 비슷한 객체, 여러 종류가 있음. 3) 반복자의 성질을 가지므로, 컨테이너와 안의 요소를 구별, 요소의 값 확인, 컨테이너 안에 있는 요소들 간의 이동할 수 있는 연산 제공 4) end() 함수는 끝이 아님, 맨 마지막 원소의 다음번 원소를 가르킴. 5) 반복자의 종류 - 입력 반복자(input iterator) : 읽기만 가능, 순방향 이동, 현 위치의 원소를 한 번만 읽을 수 있는 반복자 - 출력 반복자(output iteraotr) : 쓰기만 가능, 순방향 이동, 현 위치의 원소를 한 번만 쓸 수 있는 반복자 - 순방향 반복자(forward iterator) : 읽기/쓰기 모두 가.. 2023. 7. 13.
728x90