STL容器

4 分钟阅读 170 字 + 780 词
STL容器
一.线性容器
1.vector
image-20241002194431509
Element access at: operator[]: front: back: data:直接返回指向底层的数据的指针
Iterators begin: cbegin(C++11): end: cend (C++11): rbegin: crbegin(C++11): rend: crend(C++11):
Capacity empty: size: max_size:返回最大的可存储的元素数量 reserve: capacity: shrink to fit:将多余的容量压缩到和size一样
Modifiers clear: insert:第一个参数是迭代器pos,第二个参数是数值或者迭代器范围 insert_range(C++23):不需要写迭代器范围 emplace(C++11): vec.emplace(vec.begin(), "World"); vec.emplace(vec.begin() + 1, 3, 'a'); // 插入 "aaa" erase: push_back: emplace_back(C++11)
append_range (C++23) pop_back resize swap
2.deque
//deque的大小在64位为80字节,十个指针的大小 //deque有一个开始和结束迭代器, //每个分别有4个指针,cur、first、last、node //还有1个map指针,指向中控器(指针数组) //以及中控器指向第一个缓冲区的指针
Deque_iterator<_Tp,_Tp&,_Tp*> iterator
_Tp** _M_map;
iterator _M_start 和 _M_finish;
[ _Tp* _M_cur; _Tp* _M_first; _Tp* _M_last; _Map_pointer _M_node; ]
image-20241002194915735
element access at operator[] front back
iterators begin cbegin (C++11) end cend(C++11) rbegin crbegin(C++11) rend crend (C++11)
Capacity empty size max_size shrink to fit
Modifiers clear insert insert range (C++23) emplace(C++11) erase push back emplace_back(C++11) append range (C++23) pop back push front emplace front(C++11) prepend range(C++23) pop_front resize swap
3.array
Element acces at operator[] front back data
iterators begin cbegin end cend rbegin crbegin rend crend
Capacity empty size max size Operations fill swap
3.list
Element access front back
Iterators begin cbegin (C++11) end cend (C++11) rbegin crbegin (C++11) rend crend (C++11)
Capacity empty size max_size
Modifiers clear insert insert range(C++23) emplace(C++11) erase push back emplace back(C++11) append range (C++23) pop back push front emplace front(C++11) prepend range(C++23) pop_front resize swap
Operations merge splice remove remove_ if reverse unique sort