push_front()
, 뒤에서부터 요소를 넣는 push_back()
, 중간에 요소를 넣는 insert()
등의 함수가 있다. #include <bits/stdc++.h>
using namespace std;
int main() {
list<int> a;
for (int i = 0; i < 10; i++)a.push_back(i);
for (int i = 0; i < 10; i++)a.push_front(i);
auto it = a.begin(); it++;
a.insert(it, 1000);
for (auto it : a) cout << it << " ";
cout << ’\n ';
a.pop_front();
a.pop_back();
for (auto it : a) cout << it << " ";
cout << ’\n ';
return 0;
}
/*
9 1000 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9
1000 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8
*/
배열(array) : 같은 타입의 변수들로 이루어져 있고, 크기가 정해져 있으며, 인접한 메모리 위치에 있는 데이터를 모아놓은 집합
중복을 허용하고 순서가 있음
여기서는 정적 배열을 기반으로 설명!
탐색 : O(1). 랜덤 접근 가능
삽입, 삭제 : O(n)
따라서, 데이터 추가와 삭제 많이 하는 것은 연결 리스트, 탐색을 많이 하는 것은 배열로 하는게 좋음!
배열은 인덱스에 해당하는 원소를 빠르게 접근해야 하거나 간단하게 데이터를 쌓고 싶을 때 사용
2의 제곱승 + 1
마다 크기를 2배로 늘림#include <bits/stdc++.h)
using namespace std;
vector<int) v;
int main() {
for (int i = 1; i <= 10; i++)v.push_back(i);
for (int a : v) cout << a << " ";
cout << "\n";
v.pop_back();
for (int a : v) cout << a << " ";
count << "\n";
v.erase(v.begin(), v.begin() + 1);
for (int a : v) cout << a << " ";
count << "\n";
auto a = find(v.begin(), v.end(), 100);
if (a == v .end()) cout << "not found" << "\n";
fill(v.begin() , v.end() , 10);
for (int a : v) cout << a << " ";
cout << "\n";
v.clear();
for (int a : v) cout << a << " ";
cout << "\n";
return 0;
}
/*
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9
not found
10 10 10 10 10 10 10 10
*/
#include <bits/stdc++.h>
using namespace std;
stack<int> stk;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
for (int i = 0; i < 10; i++)stk.push(i);
while (stk.size()) {
cout << stk.top() << " ";
stk.pop();
}
}
/*
9 8 7 6 5 4 3 2 1 0
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
queue<int> q;
q.push(1);
cout < < q.front () < < "\n";
q.pop();
cout << q.size() << "\n";
return 0;
}
/*
1
0
*/
주홍철 작가님의 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.