본문 바로가기

Develop/Ps22

[C++] STL lower_bound, upper_bound 사용법 #include 헤더 lower_bound(arr, arr+N, value) 배열에서 범위 내의 원소들 중 value값 보다 크거나 같은 첫 번째 원소의 주소를 리턴합니다. 만약 그러한 원소가 없다면 end값을 리턴합니다. upper_bound(arr, arr+N, value) 배열에서 처음으로 value값을 초과하는 원소의 주소를 반환합니다. 만약 그러한 원소가 없다면 end값을 리턴합니다. 1. 기본적인 사용법 /* lower_bound(start, end, target) */ #include vector v = { 1, 2, 3, 4, 5 }; lower_bound(v.begin(), v.end(), 3); int arr[5] = { 1, 2, 3, 4, 5 }; lower_bound(arr, ar.. 2023. 12. 21.
[C++] STL fill() 함수 사용법 fill 함수를 사용하려면 일단 헤더를 포함해줘야 한다. #include 사용 방법은 fill(초기화 시키고 싶은 부분의 시작 주소, 초기화시키고 싶은 부분의 끝 주소, 초기화할 값); 배열이라면 fill(arr, arr + 5, 10); 벡터라면 fill(v.begin(), v.end(), 10); 즉 for(int i = 0; i < 5; i++) { arr[i] = 10; } 이 for문을 사용한 코드와 fill(arr, arr + 5, 10); 이 한 줄은 같은 역할을 한다. fill(arr, arr + 2, 10); fill(arr + 2, arr + 5, 20); 이렇게 부분 부분씩 초기화시켜줄 수도 있다. 2023. 11. 1.
[C++] STL find() 함수 사용법 1. find() #include find(begin, end, value); 일련의 자료구조(Array, vector 등)에서 원하는 값을 탐색하는 함수 begin과 end는 iterator 객체가 와야 한다. 범위 내(begin - end)의 원소들 중에서 value와 일치하는 첫번째 원소의 iterator를 리턴한다. 범위 내에 찾고자 하는 값이 없다면 end를 반환한다. 2. string.find() #include string str; str.find(value); 문자열 내에서 value 값을 찾는다. 문자열 내에 value와 일치하는 값이 있다면 value의 첫번째 인덱스를 반환한다. 일치하는 값이 없다면 string::npos(== 쓰레기 값)를 반환한다. https://novlog.tis.. 2023. 10. 28.
[C++] STL list 사용법 연결리스트(list) 연결리스트는 배열의 각 요소가 값만 갖고있는 것이 아니라 다음 요소를 가리키는 포인터를 함께 가지고 있다. 이는 배열에서 중간에 추가 혹은 삭제할 때 뒤의 원소를 쭉 밀거나 뒤의 원소를 쭉 당겨와야하는 단점을 보완한 것이다. 배열의 요소들을 직접 미는 것이 아닌 포인터값만 변경해주는 것으로 임의의 위치에 추가/삭제 연산을 할 수 있다. C++에서는 list라는 자료형으로 연결리스트가 구현되어 있다. //리스트 선언 list list; //리스트 포인터 선언 list::iterator iter = list.begin(); -->> c++11이상부터 auto iter = list.begin(); 가능 반복자 begin() : beginning iterator 반환 end() : end .. 2023. 10. 22.
[C++] STL vector 사용법 벡터 vector는 C++ 표준 라이브러리에 있는 자료구조 컨테이너 중 하나로 사용자가 쉽게 사용하기 위해 정의된 클래스이다. 벡터의특징 1. 동적으로 원소를 추가할 수 있다. 즉, 크기가 자동으로 늘어난다. 2. 맨 마지막 위치에 데이터를 삽입하거나 삭제할 때에는 문제가 없지만 중간 데이터의 삽입 삭제는 배열과 같은 메커니즘으로 동작한다. 3. 배열과 마찬가지로 인덱스를 이용하여 각 데이터에 접근할 수 있다. 선언 vector v; // vector 변수 이름; 형태로 선언 삽입 연산 v.push_back(1); // 마지막에 1 추가 v.insert(v.begin() , 7); // 맨 앞에 7을 삽입 v.insert(v.begin() + 2 , 10); // index 2의 위치에 10 삽입 삭제연.. 2023. 7. 18.
[C++] STL pair 사용법 pair 사용법 우선 pair을 사용하기위해서는 utility 헤더파일이 필요한데 이미 vector 헤더파일에 포함되어있기 때문에 #include만 추가하면 사용할 수 있다. pair p; // int 타입 데이터 2개를 관리할 수 있는 pair 클래스의 p객체 pair p;// int타입과 double 타입 데이터를 한번에 관리할 수 있는 pair 클래스의 p객체 pair p;// 각 각의 double 타입 데이터를 한번에 관리할 수 있는 객체 pair p;// int 타입과 char타입 테이터를 하나로 묶어서 관리할 수 있는 p객체 pair p pair 클래스의 객체 p를 생성합니다. 객체 이름은 p가 아니어도 상관없다. p.first p의 첫번째 인자를 반환한다. p.second p의 두번째 인자를.. 2023. 7. 18.
[C++] STL sort함수 사용법 sort() 함수 사용하는 방법 #include #include // STL 라이브러리 -> sort() 함수가 정의되어있음 using namespace std; bool compare(int a, int b) { // 비교 함수 return a > b; // 정렬 기준 : 내림차순 정렬 } int main(void) { int a[10] = { 9, 3, 5, 4, 1, 10, 8, 6, 7, 2 }; sort(a, a + 10); // a -> 메모리 주소, a + 10 -> 정렬할 마지막 주소가 있는 메모리 주소 sort(a, a + 10, compare); // 추가로 함수를 넣어주면 원하는 정렬 기준으로 정렬을 할 수 있다. //=> 9 ~ 2 까지의 주소를 정렬한다는 사실을 나타냄 for (i.. 2023. 7. 18.
[C++] STL 스택(stack) 사용법 스택이란? 스택(Stack)은 대표적인 LIFO(Last In First Out) 구조이다. 따라서 제일 마지막에 넣은 데이터가 처음으로 빠져나오는 것을 볼 수 있다. 스택의 기본함수에는 push, pop, empty, top, swap 등이 있다. Stack의 특징 1. 먼저 들어간 자료가 나중에 나옴 LIFO(Last In First Out) 구조 2. 시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 때 스택 메모리의 영역에서 함 3. 인터럽트처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 쓰임 4. 그래프의 깊이 우선 탐색(DFS)에서 사용 5. 재귀적(Recursion) 함수를 호출 할 때 사용 스택 헤더 파일 stack STL을 사용하기 위해서는#include 헤더파일을 포함해야 .. 2023. 4. 13.
[CS/C++] STL 덱(Deque) 사용법 덱(Deque)이란? STL 컨테이너 라이브러리 중 하나인 Deque(Double Ended Queue) 덱은 큐(Queue)와 비슷하지만 큐와 다르게 삽입과 삭제가 앞, 뒤 양쪽으로 모두 가능하다. 덱의 삽입과 삭제는 양쪽 끝(앞, 뒤)에서 이루어진다. 크기가 가변적이다. 인덱스가 존재하기 때문에 임의의 원소에 접근이 가능하다. Deque 사용법 Deque 선언 #include // deque가 들어있는 헤더파일 deque dp; // int형 덱 선언 deque dp; // char형 덱 선언 Deque의 기타 메서드 dq.begin() : dq의 첫 번째 원소를 가리키는 iterator dq.end() : dq의 마지막 원소를 가리키는 iterator dq.front() : dq의 첫 번째 원소 d.. 2023. 4. 12.
[CS/C++] STL 큐(Queue) 사용법 Queue란? Queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조이다. 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가진다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말한다. Queue는 C++ 표준 라이브러리(Standard Template Library)에 있는 정의 되어 있어 필요할 때마다 만들어 사용하지 않고 include 하여 사용하면 된다. Enqueue : 큐 맨 뒤에 데이터 추가 Dequeue : 큐 맨 앞쪽의 데이터 삭제 Queue의 특징 1. 먼저 들어간 자료가 먼저 나오.. 2023. 4. 11.