STL Container - Sequence Container
STL Containerλ κ°μ νμ μ μ¬λ¬ κ°μ²΄λ₯Ό μ μ₯νλ μΌμ’ μ μ§ν©μ΄λΌ ν μ μλ€. 컨ν μ΄λλ class templateμΌλ‘, 컨ν μ΄λ λ³μλ₯Ό μ μΈν λ 컨ν μ΄λμ ν¬ν¨ν μμμ νμ μ λͺ μν μ μλ€. 컨ν μ΄λμλ λ³΅μ¬ μμ±κ³Ό λμ μ ν μ μλ νμ μ κ°μ²΄λ§μ μ μ₯ν μ μμΌλ©°, μμμ μΆκ° λ° μ κ±°λ₯Ό ν¬ν¨ν λ€μν μμ μ λμμ£Όλ μ¬λ¬ λ©€λ² ν¨μλ₯Ό ν¬ν¨νκ³ μλ€.
STL Sequence Container
λ°μ΄ν°λ₯Ό μ νμΌλ‘ μ μ₯νλ©°, νΉλ³ν μ μ½μ΄λ κ·μΉμ΄ μλ κ°μ₯ μΌλ°μ μΈ μ»¨ν μ΄λμ΄λ€. μνμ€ μ»¨ν μ΄λμμλ μ½μ λ μμμ μμκ° κ·Έλλ‘ μ μ§λλ€.
λͺ¨λ μμκ° μ§μ μμλλ‘ λ°°μΉλμ΄ μμ΄μΌνλ€.
λ°λ³΅μκ° μ΅μν μλ°©ν₯ λ°λ³΅μ(forward iterator) μ΄μμ΄μ΄μΌνλ€.
μνμ€ μ»¨ν μ΄λμ μμλ€μ λͺ νν μμλ₯Ό κ°μ§λ―λ‘, νΉμ μμΉλ₯Ό μ°Έμ‘°νλ μ°μ°μ΄ κ°λ₯ν΄μΌνλ€.
vector
vector 컨ν
μ΄λλ λνμ μΈ μνμ€ μ»¨ν
μ΄λλ‘ λ°°μ΄κ³Ό λΉμ·νμ¬ μ¬μ©μ΄ μ¬μ°λ©° μμ£Ό μ¬μ©λλ€. vectorλ μμ μ κ·Ό λ°λ³΅μ(Random Access Iterator)λ₯Ό μ§μνλ λ°°μ΄ κΈ°λ° μ»¨ν
μ΄λμ΄λ€. vectorμ κ°μ₯ ν° νΉμ§ μ€ νλλ μμκ° νλμ λ©λͺ¨λ¦¬ λΈλ‘μ μ°μνκ² μ μ₯λλ€λ κ²μ΄λ€. vectorλ μμκ° μΆκ°λκ±°λ μμ λ λλ§λ€ μλμΌλ‘ λ©λͺ¨λ¦¬λ₯Ό μ¬ν λΉνμ¬ ν¬κΈ°λ₯Ό μ¬ν λΉνμ¬ ν¬κΈ°λ₯Ό λμ μΌλ‘ λ³κ²½νλ€. λ©λͺ¨λ¦¬ ν λΉ ν¬κΈ°λ₯Ό μ μ μκ² capacity() ν¨μλ₯Ό μ 곡νλ©° νλ²μ λ©λͺ¨λ¦¬λ₯Ό ν λΉν μ μλ reserve() ν¨μλ μ 곡λλ€. μμκ° μ°μνκ² μ μ₯λλ―λ‘ []
μ°μ°μ λλ at μΌλ‘ μ½κΈ°μλ λΉ λ₯΄μ§λ§ insert(), erase(), push_back() λ±μ λΉν¨μ¨μ μΌλ‘ λμνλ€.
#include <vector>
vector<T> κ°μ²΄λͺ
(μμ±μ μΈμ);
μμ±μ μΈμλ‘λ λ²‘ν° μ»¨ν μ΄λμ μ΄κΈ° ν¬κΈ°λ₯Ό μ λ¬νλ©°, μλ΅νλ©΄ μμλ₯Ό κ°μ§μ§ μλ λΉ λ²‘ν°λ₯Ό μμ±νλ€.
μμ±μ
μμ±μ
μ€λͺ
vector v
vλ λΉ μ»¨ν μ΄λ
vector v(n)
vλ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°νλ nκ°μ μμλ₯Ό κ°λλ€.
vector v(n,x)
vλ x κ°μΌλ‘ μ΄κΈ°νλ nκ°μ μμλ₯Ό κ°λλ€.
vector v(v2)
vλ v2 컨ν μ΄λμ 볡μ¬λ³Έμ΄λ€.(λ³΅μ¬ μμ±μ νΈμΆ)
vector v(a,b)
vλ λ°λ³΅μ κ΅¬κ° [b,e)λ‘ μ΄κΈ°νλ μμλ₯Ό κ°λλ€.
λ©€λ²ν¨μ
ν¨μ
μ€λͺ
v.assign(n,x)
vμ x κ°μΌλ‘ nκ°μ μμλ₯Ό ν λΉνλ€.
v.assign(a,b)
vλ₯Ό λ°λ³΅μ κ΅¬κ° [a,b)λ‘ ν λΉ
v.at(i)
vμ iλ²μ§Έ μμλ₯Ό μ°Έμ‘°
v.front()
vμ 첫 λ²μ§Έ μμλ₯Ό μ°Έμ‘°νλ€.
v.back()
vμ λ§μ§λ§ μμλ₯Ό μ°Έμ‘°
v.capacity()
vμ ν λΉλ 곡κ°μ ν¬κΈ°
v.clear()
vμ λͺ¨λ μμλ₯Ό μ κ±°
v.empty()
vκ° λΉμλμ§ μ‘°μ¬
p=v.begin()
pλ vμ 첫 μμλ₯Ό κ°λ¦¬ν¨λ€.
p=v.end()
pλ vμ λμ νμνλ λ°λ³΅μ
q=v.erase(p)
pκ° κ°λ¦¬ν€λ μμλ₯Ό μ κ±°νλ€. qλ λ€μ μμλ₯Ό κ°λ¦¬ν¨λ€.
q=v.erase(b,e)
λ°λ³΅μ κ΅¬κ° [b,e)μ λͺ¨λ μμλ₯Ό μ κ±°νλ€. qλ λ€μ μμλ₯Ό κ°λ¦¬ν¨λ€.
q=v.insert(p,x)
pκ° κ°λ¦¬ν€λ μμΉμ x κ°μ μ½μ νλ€. qλ μ½μ ν μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€.
v.insert(p,n,x)
pκ° κ°λ¦¬ν€λ μμΉμ nκ°μ x κ°μ μ½μ νλ€.
v.insert(p,b,e)
pκ° κ°λ¦¬ν€λ μμΉμ λ°λ³΅μ κ΅¬κ° [b,e)μ μμλ₯Ό μ½μ νλ€.
x=v.max_size()
xλ vκ° λ΄μ μ μλ μ΅λ μμμ κ°μ(λ©λͺ¨λ¦¬μ ν¬κΈ°)
v.pop_back()
vμ λ§μ§λ§ μμλ₯Ό μ κ±°νλ€.
v.push_back()
vμ λμ xλ₯Ό μΆκ°νλ€.
p=v.rbegin()
pλ vμ μ μμ°¨μ΄μ 첫 μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€.
p=v.rend()
pλ vμ μ μμ°¨μ΄μ λμ νμνλ λ°λ³΅μ
v.reserve(n)
nκ°μ μμλ₯Ό μ μ₯ν 곡κ°μ μμ½νλ€.
v.resize(n)
vμ ν¬κΈ°λ₯Ό nμΌλ‘ λ³κ²½νκ³ νμ₯λλ 곡κ°μ κ°μ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°ν νλ€.
v.resize(n,x)
vμ ν¬κΈ°λ₯Ό nμΌλ‘ λ³κ²½νκ³ νμ₯λλ 곡κ°μ κ°μ x κ°μΌλ‘ μ΄κΈ°ννλ€.
v.size()
vμ μμ κ°―μ
v.swap(v2)
vμ v2λ₯Ό swapνλ€.
μμ
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> v;
vector<int> v2(5); // 0μΌλ‘ μ΄κΈ°νλ 5κ°μ μμ
// λ©λͺ¨λ¦¬ν¬κΈ° 8λ§νΌ ν λΉ
v.reserve(8);
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
for (vector<int>::size_type i = 0; i < v.size(); ++i)
cout << v[i] << endl;
cout << endl;
// 벑ν°μ μμ κ°―μλ₯Ό 10κ°λ‘ νμ₯, μΆκ°λ 곡κ°μ λν΄νΈ 0μΌλ‘ μ±μμ§λ€.
v.resize(10);
}
μ¬κΈ°μ v.size()λ§νΌ forλ¬Έμ μ€ννλ €λ©΄ v.size()μ νμ κ³Ό i κ° κ°μμΌ νλ€.
vector<int>::size_type
: 벑ν°μ size μ λ°ν νμ μ κ°μ Έμ¨λ€ (unsigned int)
deque
depueλ double-ended queueλ₯Ό μλ―Ένλ©°, μλ°©ν₯ νμ΄λ€. 컨ν μ΄λμ μ λμμ λΉ λ₯΄κ² μμλ₯Ό μ½μ νκ±°λ μμ ν μ μλ€.
ꡬ쑰
deque<T> λ³μλͺ
;
μμ±μ
μμ±μ
deque dq
dqλ λΉ μ»¨ν μ΄λμ΄λ€.
deque dq(n)
dqλ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°νλ nκ°μ μμλ₯Ό κ°λλ€.
deque dq(n, x)
dqλ x κ°μΌλ‘ μ΄κΈ°νλ nκ°μ μμλ₯Ό κ°λλ€.
deque dq(dq2)
dqλ dq2 컨ν μ΄λμ 볡μ¬λ³Έμ΄λ€
deque dq(b,e)
dqλ λ°λ³΅μ κ΅¬κ° [b,e)λ‘ μ΄κΈ°νλ μμλ₯Ό κ°λλ€.
Member Function
λ©€λ² ν¨μ
dq.assign(n,x)
dqμ x κ°μΌλ‘ nκ°μ μμλ₯Ό ν λΉνλ€.
dq.assign(b,e)
dqλ₯Ό λ°λ³΅μ κ΅¬κ° [b,e)λ‘ ν λΉνλ€.
dq.back()
dqμ λ§μ§λ§ μμλ₯Ό μ°Έμ‘°νλ€.
p=lt.begin()
pλ dqμ 첫 μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€
dq.clear()
dqμ λͺ¨λ μμλ₯Ό μ κ±°νλ€.
dq.empty()
dqκ° λΉμλμ§ μ‘°μ¬νλ€.
p=dq.end()
pλ dqμ λμ νμνλ λ°λ³΅μλ€
q=dq.erase(p)
pκ° κ°λ¦¬ν€λ μμλ₯Ό μ κ±°νλ€. qλ λ€μ μμλ₯Ό κ°λ¦¬ν¨λ€.
q= dq.erase(b,e)
λ°λ³΅μ κ΅¬κ° [b,e)μ λͺ¨λ μμλ₯Ό μ κ±°νλ€. qλ λ€μ μμλ€
dq.front()
dqμ 첫 λ²μ§Έ μμλ₯Ό μ°Έμ‘°νλ€.
q=dq.insert(p,x)
pκ° κ°λ¦¬ν€λ μμΉμ x κ°μ μ½μ νλ€. qλ μ½μ ν μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€
dq.insert(p,n,x)
pκ° κ°λ¦¬ν€λ μμΉμ n κ°μ x κ°μ μ½μ νλ€.
dq.insert(p,b,e)
pκ° κ°λ¦¬ν€λ μμΉμ λ°λ³΅μ κ΅¬κ° [b,e)μ μμλ₯Ό μ½μ νλ€.
x=dq.max_size()
xλ dqκ° λ΄μ μ μλ μ΅λ μμμ κ°μ
dq.pop_back()
dqμ λ§μ§λ§ μμλ₯Ό μ κ±°νλ€.
dq.pop_front()
dqμ 첫λ²μ§Έ μμλ₯Ό μ κ±°νλ€.
dq.push_back(x)
dqμ λμ xλ₯Ό μΆκ°νλ€.
dq.push_front(x)
dqμ μμͺ½μ xλ₯Ό μΆκ°νλ€.
p=dq.rbegin()
pλ dqμ μ μμ°¨μ΄μ 첫 μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€
p=dq.rend()
pλ dqμ μ μμ°¨μ΄μ 첫 μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€
dq.resize(n)
dqμ ν¬κΈ°λ₯Ό nμΌλ‘ λ³κ²½νκ³ νμ₯λλ 곡κ°μ κ°μ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°ννλ€.
dq.resize(n,x)
dqμ ν¬κΈ°λ₯Ό nμΌλ‘ λ³κ²½νκ³ νμ₯λλ 곡κ°μ κ°μ x λ‘ μ΄κΈ°ννλ€.
dq.size()
dq μμμ κ°―μλ€
dq.swap(dq2)
dqμ dq2λ₯Ό swap νλ€.
μμ
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
int main(){
// deque μ μΈ λ° μ΄κΈ°ν
deque<int> dq;
dq.push_back(20);
dq.push_back(30);
dq.push_front(10);
cout << "deque : ";
copy(dq.begin(), dq.end(), ostream_iterator<int>(cout," "));
dq.pop_front();
cout << "deque : ";
deque<int>::iterator iter;
for(iter=dq.begin();iter!=dq.end();++iter){
cout << * iter << ' ';
}
cout << endl;
}
list
STL Listλ double linked list, forward_listλ single linked listμ κ°λ€.
listλ λ Έλ κΈ°λ° μ»¨ν μ΄λλ‘
at()
κ³Ό[]
μ°μ°μκ° μμΌλ©° μμ μ κ·Ό λ°λ³΅μκ° μλ μλ°©ν₯ λ°λ³΅μ(++
,--
)λ₯Ό μ 곡μ€κ°μ μμλ₯Ό μ½μ (insert), μ κ±°(erase) νλλΌλ μμ μκ° λ³΅μ‘λ(O(n))μ μν μ±λ₯
ꡬ쑰
template < class T, class Allocator = allocator<T> > class list;
list<int> intList;
list<string> stringList;
μμ±μ
μμ±μ
list lt
ltλ λΉ μ»¨ν μ΄λμ΄λ€.
list lt(n)
ltλ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°νλ nκ°μ μμλ₯Ό κ°λλ€.
list lt(n, x)
ltλ x κ°μΌλ‘ μ΄κΈ°νλ nκ°μ μμλ₯Ό κ°λλ€.
list lt(lt2)
ltλ lt2 컨ν μ΄λμ 볡μ¬λ³Έμ΄λ€
list lt(b,e)
ltλ λ°λ³΅μ κ΅¬κ° [b,e)λ‘ μ΄κΈ°νλ μμλ₯Ό κ°λλ€.
Member Function
λ©€λ² ν¨μ
lt.assign(n,x)
ltμ x κ°μΌλ‘ nκ°μ μμλ₯Ό ν λΉνλ€.
lt.assign(b,e)
ltλ₯Ό λ°λ³΅μ κ΅¬κ° [b,e)λ‘ ν λΉνλ€.
lt.back()
ltμ λ§μ§λ§ μμλ₯Ό μ°Έμ‘°νλ€.
p=lt.begin()
pλ ltμ 첫 μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€
lt.clear()
ltμ λͺ¨λ μμλ₯Ό μ κ±°νλ€.
lt.empty()
ltκ° λΉμλμ§ μ‘°μ¬νλ€.
p=lt.end()
pλ ltμ λμ νμνλ λ°λ³΅μλ€
q=lt.erase(p)
pκ° κ°λ¦¬ν€λ μμλ₯Ό μ κ±°νλ€. qλ λ€μ μμλ₯Ό κ°λ¦¬ν¨λ€.
q= lt.erase(b,e)
λ°λ³΅μ κ΅¬κ° [b,e)μ λͺ¨λ μμλ₯Ό μ κ±°νλ€. qλ λ€μ μμλ€
lt.front()
ltμ 첫 λ²μ§Έ μμλ₯Ό μ°Έμ‘°νλ€.
q=lt.insert(p,x)
pκ° κ°λ¦¬ν€λ μμΉμ x κ°μ μ½μ νλ€. qλ μ½μ ν μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€
lt.insert(p,n,x)
pκ° κ°λ¦¬ν€λ μμΉμ n κ°μ x κ°μ μ½μ νλ€.
lt.insert(p,b,e)
pκ° κ°λ¦¬ν€λ μμΉμ λ°λ³΅μ κ΅¬κ° [b,e)μ μμλ₯Ό μ½μ νλ€.
x=lt.max_size()
xλ ltκ° λ΄μ μ μλ μ΅λ μμμ κ°μ
lt.merge(lt2)
lt2λ₯Ό ltλ‘ ν©λ³ μ λ ¬νλ€.
lt.merge(lt2, pred)
lt2λ₯Ό ltλ‘ ν©λ³ μ λ ¬νλ€. pred(쑰건μ)λ₯Ό κ°μ§λμΌλ‘ ν©λ³νλ€.
lt.pop_back()
ltμ λ§μ§λ§ μμλ₯Ό μ κ±°νλ€.
lt.pop_front()
ltμ 첫λ²μ§Έ μμλ₯Ό μ κ±°νλ€.
lt.push_back(x)
ltμ λμ xλ₯Ό μΆκ°νλ€.
lt.push_front(x)
ltμ μμͺ½μ xλ₯Ό μΆκ°νλ€.
p=lt.rbegin()
pλ ltμ μ μμ°¨μ΄μ 첫 μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€
lt.remove(x)
x μμλ₯Ό λͺ¨λ μ κ±°νλ€.
lt.remove_if(pred)
pred(λ¨ν 쑰건μ)κ° 'μ°Έ'μΈ λͺ¨λ μμλ₯Ό μ κ±°νλ€.
p=lt.rend()
pλ ltμ μ μμ°¨μ΄μ 첫 μμλ₯Ό κ°λ¦¬ν€λ λ°λ³΅μλ€
lt.resize(n)
ltμ ν¬κΈ°λ₯Ό nμΌλ‘ λ³κ²½νκ³ νμ₯λλ 곡κ°μ κ°μ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°ννλ€.
lt.reverse()
lt μμ°¨μ΄μ λ€μ§λλ€.
lt.size()
lt μμμ κ°―μλ€
lt.sort()
ltμ λͺ¨λ μμλ₯Ό μ€λ¦ μ°¨μ μΌλ‘ μ λ ¬νλ€.
lt.sort(pred)
ltμ λͺ¨λ μμλ₯Ό pred(쑰건μ)λ₯Ό κΈ°μ€μΌλ‘ μ λ ¬νλ€.
lt.splice(p, lt2)
pκ° κ°λ¦¬ν€λ μμΉμ lt2μ λͺ¨λ μμλ₯Ό μλΌ λΆμΈλ€.
lt.splice(p, lt2, q)
pκ° κ°λ¦¬ν€λ μμΉμ lt2μ qκ° κ°λ¦¬ν€λ μμλ₯Ό μλΌ λΆμΈλ€.
lt.splice(p, lt2, b, e)
pκ° κ°λ¦¬ν€λ μμΉμ lt2μ μμ°¨μ΄ [b,e)λ₯Ό μλΌ λΆμΈλ€.
lt.swap(lt2)
ltμ lt2λ₯Ό swap νλ€.
lt.unique()
μΈμ ν μμμ κ°μ΄ κ°λ€λ©΄ μ μΌν μμμ μμ°¨μ΄λ‘ λ§λ λ€.
lt.unique(pred)
μΈμ ν μμκ° pred(μ΄ν 쑰건μ)μ κΈ°μ€μ λ§λ€λ©΄ μ μΌν μμμ μμ°¨μ΄λ‘ λ§λ λ€
μμ
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> list1;
list1.push_back(10);
list1.push_back(20);
list1.push_back(30);
list1.push_back(40);
list1.push_back(50);
list<int>::iterator iter;
for (iter = list1.begin(); iter != list1.end(); ++iter){
cout << *iter << ' ';
}
cout << endl;
// 10 20 30 40 50
// erase μμ
iter = list1.begin();
iter++;
iter++;
list<int>::iterator iter2 = list1.erase(iter);
for (iter = list1.begin(); iter != list1.end(); ++iter){
cout << *iter << ' ';
}
cout << endl;
// 10 20 40 50
cout << "iter2 : " << *iter2 << endl;
// iter2 : 40
list1.push_back(10);
list1.push_back(10);
for (iter = list1.begin(); iter != list1.end(); ++iter){
cout << *iter << ' ';
}
cout << endl;
// 10 20 40 50 10 10
// 리μ€νΈμμ μμ 10 μ κ±°
list1.remove(10);
for (iter = list1.begin(); iter != list1.end(); ++iter){
cout << *iter << ' ';
}
cout << endl;
// 20 40 50
return 0;
}
forward_list
<forward_list>
ν€λμ μ‘΄μ¬νλ€.λ¨μμ°κ²°λ¦¬μ€νΈ μλ£κ΅¬μ‘°λ₯Ό μ΄μ©νμ¬ λ§λ sequence container
λ¨λ°©ν₯리μ€νΈλ‘λ§ μΆ©λΆν κ²½μ°μ μ¬μ©(ν λ°©ν₯μΌλ‘λ§ μ΄λ κ°λ₯νλ€.)
std::list
λ³΄λ€ μ½μ /μμ μλκ° λ λΉ λ₯΄λ©°, λ©λͺ¨λ¦¬λ₯Ό λ μ κ² μ¬μ©νλ€.(μ°¨μ΄λ ν¬μ§ μλ€.)
ꡬ쑰
template< class T, class Allocator = std::allocator<T> > class forward_list;
forward_list<int> singleList;
νΉμ§
νΉλ³ν μ΄μ κ° μλ€λ©΄
forward_list
λ κΈ°μ‘΄μlist
μ μ€κ³μ λ§μΆλ€.std::list
μinsert
μerase
λ₯Όforward_list
μμ ꡬνμ΄ λ³΅μ‘ν΄μ§κ³ μ±λ₯ μΈ‘λ©΄μμ μ’μ§ μμ μ 곡νμ§ μλλ€.λ€λ₯Έ STLμ containerμ μλ
size
ν¨μλ₯Ό μ 곡νμ§ μλλ€. μ΄μ λ μμ μλ₯Ό 보쑴νλ λ©€λ²λ₯Όκ°μ§κ³ μμΌλ©΄ CμΈμ΄μμ ꡬνν κ²κ³Ό λΉκ΅ν΄μ λΆνμν λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νλ€. λ§μ½ μ΄λ° λ©€λ²λ₯Ό κ°μ§κ³ μμ§ μμΌλ©΄μ size ν¨μλ₯Ό μ§μνλ©΄ νΈμΆν λλ§λ€ λͺ¨λ μμλ₯Ό μΈμ΄μΌ νλ―λ‘ κ³μ°λμ΄ O(N)μ΄ λλ€.
λ©€λ² λ³μ
Member types
Member type
Definition
value_type
T
allocator_type
ν λΉμ
size_type
λΆνΈ μλ μ μ(unsigned int) νμ
(μΌλ°μ μΌλ‘ std::size_t
)
difference_type
λΆνΈ μλ μ μ(signed int) νμ
(λ³΄ν΅ std::ptrdiff_t
)
reference
value_type&
const_reference
const value_type&
pointer
std::allocator_traits<Allocator>::pointer
const_pointer
std::allocator_traits<Allocator>::const_pointer
iterator
ForwardIterator
const_iterator
μμ(constant) μλ°©ν₯ λ°λ³΅μ(iterator)
Member Function
Member Function
μ€λͺ
assign
컨ν μ΄λμ κ°μ ν λΉ
befor_begin
cbefore_begin
μμνκΈ° μ μ μμμ λ°λ³΅μ(iterator)λ₯Ό λ°ν
begin
cbegin
첫λ²μ§Έ μμμ λ°λ³΅μ(iterator)λ₯Ό λ°ν
end
cend
λ§μ§λ§ μμλ‘μ λ°λ³΅μ(iterator) λ°ν
empty
νμ¬ μ»¨ν μ΄λκ° λΉμ΄μλμ§ νμΈ
max_size
μμμ μ΅λ κ°μλ₯Ό λ°ν
clear
λͺ¨λ μμ
resize
μ¬μ΄μ¦ λ³κ²½
insert_after
μ½μ
erase_after
μμ
push_front
μλ‘μ΄ μμλ₯Ό μμ μ½μ
pop_front
첫λ²μ§Έ μμ μμ
swap
μμλ€μ μλ‘ κ΅ν
remove
remove_if
쑰건μμ
unique
μ€λ³΅μμ μμ
reverse
μ ν(μμΌλ‘ λ°κΏ)
merge
λ³ν©
sort
μ λ ¬
splice_after
ν΄λΉ μμλ₯Ό μλ³Έ μλ°©ν₯ 리μ€νΈμμ μμ νκ³ , λμ μλ°©ν₯ 리μ€νΈμ μ§μ λ μμΉμ μ½μ
μμ
#include <iostream>
#include <forward_list>
using namespace std;
int main(){
// forward_list κ°μ²΄μ μ μΈ λ° μ΄κΈ°ν
forward_list<int> singleList = {10, 20, 400, 30};
forward_list<int> singleList2 = {40, 50};
forward_list<int>::iterator itr;
// κ°μ΄ 400μΈ λͺ¨λ μμλ₯Ό μμ ν¨.
singleList.remove(400);
// singleList 첫 λ²μ§Έ μμλ₯Ό κ°λ¦¬ν€λλ‘ λ°λ³΅μλ₯Ό μ΄κΈ°ν
itr = singleList.begin();
//singleList2 λͺ¨λ μμλ₯Ό singleList 첫 λ²μ§Έ μμ λ€μμ μ½μ
singleList.splice_after(itr, singleList2);
}
μ°Έμ‘°νμ΄μ§
Last updated
Was this helpful?