C++/자료구조

C++/자료구조

C++ [자료구조] / #forward_list #멤버 함수

forward_list - forward_list는 list와 같은 연결 리스트와 같은 형태의 자료 구조 - 자료의 중간과 처음부분에 원소를 추가할 수 있다. - 가장 첫번째 자료에만 접근할 수 있다. #include forward_list fl; int x=0; fl.begin(); fl.end(); fl.clear(); fl.emplace_after(fl.begin(), x); fl.emplace_front(x); fl.empty(); fl.erase_after(fl.begin(), fl.end()); fl.remove(x); fl.remove_if(x); fl.front(); fl.pop_front(); fl.push_front(x); fl.insert_after(fl.begin(),x) fl.re..

C++/자료구조

C++ / #emplace vs insert

emplace - C++에서 컨테이너를 사용할 때 자주 있는 함수 - 엄연히 insert와 약간은 다름 점들이 있다. #include priority_queue pq; pq.insert(make_pair(x,str)); pq.emplace(x,str); pq.emplace(make_pair(x,str));//emplace로 추가할 경우 두가지 모두 가능 - 또한 emplace로 추가할 때 만약 추가하는 값이 이미 기존에 존재하면 그 값을 지워버린다. #include #include using namespace std; int main() { priority_queue pq; int N, num; cin >> N; for (int i = 0; i > num; pq.push(n..

C++/자료구조

C++ [자료구조] / #priority queue

priority queue - 일반적인 queue에서 정렬 기능이 추가된 컨테이너 - push로 요소가 추가될 때마다 자동으로 내림차순 정렬(top이 가장 큰 수, 즉 [0] 에 가장 큰 수)되는 기능을 가지고 있다. #include priority_queue pq; priority_queue pq;// 오름차순으로 선언 , 즉 top에 가장 작은 수가 온다. pq.push(x);// pq에 x 추가 pq.emplace(x); // pq의 요소 형에 맞게 추가 pq.top();// pq의 가장 위에 있는 값, priority_queue의 경우는 가장 큰 값을 반환 pq.pop(); // pq의 가장 위에 있는 값을 제거 pq.empty();// pq가 비어있으면 true, 아니면 false 반환 pq.s..

C++/자료구조

C++ [자료구조] / # set #STL

set - STL 중 하나로 특정한 순서의 정렬로 유일한 요소들만 갖는 자료구조이다. - 기본적으로 오름차순으로 요소가 정렬되어 저장된다. - 해당 요소들은 key값이므로 중복이 허용되지 않는다. #include set s; // int형 원소를 갖는 set 생성 s.size(); // s의 원소 개수 반환 s.count(x);// 원소 x의 개수 반환. set의 경우 중복이 허용되지않기때문에 x원소가 있으면 1 없으면 0 반환 s.begin(); // s의 첫번째 iterator 반환 s.end();// s의 마지막 iterator 반환 s.clear();// 모든 요소 제거 s.empty();// s가 비어있으면 true / 아니면 false 반환 s.erase(x);// x요소 제거 / 제거에 성공..

C++/자료구조

C++ [자료구조] / #맵 #map

map - 각 노드가 key(중복불가) 와 value 쌍으로 이루어진 트리 - 각 노드는 pari 객체 형태의 요소를 가짐. - 요소가 저장될 때 key 기준으로 자동 오름차순 정렬됨. - 레드 블랙 트리 : 자가 균형 이진 탐색 트리로써 삽입과 삭제가 일어나는 경우에 자동으로 그 높이를 작게 유지하는 이진 탐색 트리 멤버 함수 #include map map; // int형 키와 string형 value를 요소로 갖는 맵 생성 map.begin(); // 첫 번째 원소의 iterator 반환 map.end(); // 마지막 원소 다음의 iterator 반환 map.clear(); // 저장하고 있는 모든 원소 삭제 map.insert(make_pair(key,value)); // 원소를 생성 후 추가 m..

C++/자료구조

C++ [자료구조] / #queue 구조 및 클래스 사용법

queue queue 정의 및 특징 - 먼저들어간 원소가 먼저 나오게 되는 자료구조. FIFO(First In First Out) - 선입선출 형태의 자료구조이다. - 요소를 추가할 때는 오직 뒤만 추가할 수 있다. 요소를 제거할 때는 가장 앞의 요소만 제거할 수 있다. 멤버 함수 #include queue que; // int queue 선언 que.push(value); // queue에 value 추가 que.size(); // 큐가 가지고 있는 값의 갯수 반환 que.pop(); // 큐의 가장 앞에 있는 요소 삭제 que.front(); // 큐의 가장 앞에 있는 요소 반환 que.back(); // 큐의 가장 뒤에 있는 요소 반환 que.empty(); // 큐가 비어있으면 true 비어있지않..

C++/자료구조

C++ [자료구조] / #list구조와 클래스 설명

list list 정의 및 특징 - 각 노드가 데이터와 다음 노드의 위치 정보를 가지고 한 줄로 연결되어있는 방식으로 데이터를 저장하는 자료 구조이다. 이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다.(그림 참고) - 원소를 탐색할때, 임의접근 반복자 (at(), []) 는 불가능하고, 양방향 반복자(++,--)를 이용해서 탐색 가능 - 한 줄로 연결되어있고 특정한 원소를 접근하기 위해 해당 원소의 포인터를 가지고 있는 노드에 우선 접근하여야한다. 즉, 임의의 중간 위치에 있는 원소에 바로 접근하는 것이 불가능하다. 멤버 함수 #include list list; list.begin() // 첫번째 요소 iteratot를 반환 ..

C++/자료구조

C++ [자료구조] / #Stack 구조와 클래스 사용법

Stack Stack 정의 및 특징 - 스택은 대표적인 LIFO(Last In First Out) / 제일 마지막에 넣은 데이터가 처음으로 빠져나오는 구조. - stack은 후입선출의 대표적인 자료구조이다. - STL(Standard Template Library) 속 stack은 stack 자료구조를 사용자가 편하게 쓸 수 있도록 해당 자료구조를 클래스로 구현해놓았다. - stack의 가장 큰 특징은 후입 선출이다. 따라서 stack에 접근할 수 있는 원소는 top에 위치한 원소가 유일하다. 만약 가장 아래에 위치한 원소에 접근하고자 한다면 상위의 모든 원소를 제거하는 과정이 필요하다. 이해를 위한 예시 - stack의 구조는 마치 프링글스와 같다. 과자 생산공장에서 용기에 과자를 담을 때 가장 아래부..

공부하는 신입사원
'C++/자료구조' 카테고리의 글 목록