#include <bits/stdc++.h>
using namespace std;
bool cmp(int a, int b) {
if (a > b)
return true;
else
return false;
}
void vectorPrac(){
vector<int> v;
v.push_back(0);
v.push_back(1);
v.push_back(-1);
sort(v.begin(), v.end(), cmp);
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';
}
cout << '\n';
v.erase(v.begin() + 1);
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';
}
vector<string> strv;
strv.push_back("abc\n");
cout << strv[0];
string a = "abcdef";
string subs = a.substr(1, 3);
cout << subs << '\n';
}
void stackPrac(){
stack<int> stk;
stk.push(1);
stk.pop();
stk.push(5);
stk.push(4);
cout << "스택크기 = " << stk.size() << '\n';
while(!stk.empty()){
cout << stk.top() << ' ';
stk.pop();
}
cout << '\n';
}
void queuePrac(){
queue<int> q;
q.push(1);
q.push(2);
cout << "큐 크기 = " << q.size() << '\n';
while(!q.empty()){
cout << q.front() << ' ';
q.pop();
}
cout << '\n';
}
void mapPrac(){
map<string, int> mp;
mp.insert({"abc", 1});
mp.insert({"def", 2});
mp.insert({"abc", 3});
mp["abc"] = 3;
for(auto itr = mp.begin() ; itr != mp.end() ; itr++){
cout << itr->first << " " << itr->second << '\n';
cout << itr->first << " " << mp[itr->first] << '\n';
}
cout << "맵 크기 = " << mp.size() << '\n';
}
void setPrac(){
vector<int> v = {4,4,4,5,1,1,1,2,3};
for(int i = 0 ; i < v.size() ; i++){
cout << v[i] << ' ';
}
cout << '\n';
set<int> st;
for(int i = 0 ; i < v.size() ; i++){
st.insert(v[i]);
}
for(auto itr = st.begin() ; itr != st.end() ; itr++){
cout << *itr << ' ';
}
cout << '\n';
set<int, greater<int> > bigSt;
for(int i = 0 ; i < v.size() ; i++){
bigSt.insert(v[i]);
}
for(auto itr = bigSt.begin() ; itr != bigSt.end() ; itr++){
cout << *itr << ' ';
}
cout << '\n';
}
void priority_queuePrac(){
priority_queue<int, vector<int>, less<int> > pq;
pq.push(9);
pq.push(1);
pq.push(4);
pq.push(5);
pq.push(2);
while(!pq.empty()){
cout << pq.top();
pq.pop();
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
vectorPrac();
stackPrac();
queuePrac();
mapPrac();
setPrac();
priority_queuePrac();
}