1. 큐
함수 |
기능 |
q.front() |
가장 먼저 들어간 원소 리턴 |
q.back() |
가장 마지막에 들어간 원소 리턴 |
q.push(value) |
값을 추가 |
q.empty() |
비어있으면 1 |
q.size() |
내부 값의 개수 리턴 |
q.pop() |
front값 삭제 |
2. 스택
#include <stack>
stack<int> mystack;
stack<vector<int>> mystack2; //스택안에 벡터
mystack.pop() // 스택의 끝 값 삭제
mystack.push(5) // 스택 삽입
a=mystack.top() // 스택의 끝 값 return
함수 |
기능 |
s.top() |
가장 마지막에 들어간 원소 리턴 |
s.push(value) |
값을 추가 |
s.empty() |
비어있으면 1 |
s.size() |
내부 값의 개수 리턴 |
s.pop() |
top값 삭제 |
3. deque
#include <iostream>
#include <deque>
using namespace std;
int main(){
deque<int> dq; // 덱 선언
dq.push_back(10); //뒤에 넣기
dq.push_front(200); //앞에넣기
// 인자를 통한 덱확인
for (deque<int>::size_type i = 0; i < dq.size(); ++i){
cout << dq[i] << ' ';
}
// 반복자를 통한 덱확인
deque<int>::iterator iter;
for (iter = dq.begin(); iter != dq.end(); ++iter){
cout << *iter << ' ';
}
// dfs돌릴때
while(!stack.empty()) {
}
}
//pop과 동시에 리턴되지 않으므로 아래와 같이 pop
a=dq.front();
dq.pop_front();
b=dq.back();
dq.pop_back();
함수 |
기능 |
dq.front() |
가장 앞에 원소 리턴 |
dq.pop_front() |
첫번째 원소 제거 |
dq.push_front() |
가장 앞에 x 추가 |
dq.back() |
가장 마지막 원소 리턴 |
dq.pop_back() |
가장 마지막 원소 제거 |
dq.push_back() |
가장 뒤에 x 추가 |
dq.size() |
원소의 개수 |
4. priority queue (heap)
priority_queue<int,vector<int>,less<int>> pq
// 1. less<int> 대신 greater<int>를 쓰면 최소힙
// 2. priority_queue<int> pq 만 써도 됨.
함수 |
기능 |
pq.top() |
가장큰 값 리턴 |
pq.push(value) |
값추가 |
pq.empty() |
비어있으면 1 |
pq.size() |
개수 리턴 |
pq.pop() |
top값 삭제 |
5. map(dictionary)
* key를 기준으로 자동 정렬
#include <map>
map<string, int> m;
함수 |
기능 |
m[key]=value m.insert(make_pair("key",value)) |
입력 |
map<string, int>::iterator it it->first it->second |
key value 접근 |
m.erase("key") |
제거 |
m.count("key") |
개수반환 (있으면1 아니면0) |
m.empty() |
비어있으면 1 아니면 0 |
m.size() |
총개수 |
6. SET
* 자동으로 오름차순 정렬
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
int main() {
//선언
set<int> s;
//삽입
s.insert(3);
s.insert(4);
s.insert(5);
s.insert(5);
//반복자를 통한 출력 ( s[i] 혹은 *(s.begin+i) 이런거 안된다!)
set<int>::iterator it=s.begin();
for (int i = 0; i < s.size(); i++) {
cout<<*it<<",";
it++;
}
cout << endl;
//사이즈
cout << s.size()<<endl;
//비어있는지 확인
cout << s.empty()<<endl;
//값의 개수(set이기때문에 무조건 0아니면 1임)
cout << s.count(4) << endl;
//값을 모두 제거
s.clear();
return 0;
}
<output>
3,4,5,
3
0
1
함수 |
기능 |
s.insert(value) |
입력 |
it++, it--,s.begin() 사용가능 s[i], s.begin()+i 불가 |
|
s.size() |
총개수 |
s.empty() |
비어있으면 1 |
s.count(value) |
value개수 (있으면 항상1, 없으면 0) |
s.clear() |
값 모두 제거 |
7. pair
#include <utility>
pair<int,string> p;
함수 |
기능 |
p=make_pair(1,"name") |
입력 |
p.first p.second |
첫번째원소 두번째원소 |
p1==p2 p1>p2 p1!=p2 p1>=p2 |
연산가능 |
sort |
1. 첫번째 인자로 판단 2. 같을 시, 두번째 인자로 판단. |
8. vector
#include <vector>
//1차원 벡터
vector<int> v; //빈 컨테이너
vector<int> v(n); // 0으로 초기화된 n개의 원소 갖음
vector<int> v(n,x); //x로 초기화된 n개의 원소 갖음
vector<int> v{1,2,3}; //벡터 v는 [1,2,3]
vector<int> v(v2); //v2를 v에 복사함
//2차원 벡터 (6*5 크기)
vector<vector<int>> arr(6, vector<int>(5, 0));
//벡터 추가
v.push_back(10);
//벡터 삭제, return값은 없고 끝값만 삭제함
v.pop_back();
//벡터 사이즈
v.size()
//끝값 삭제
v.poo_back()