第二輯 數據結構
- 綫段樹
- 樹狀數組
- 離散化
- STL
Segment Tree
1 |
|
Fenwick Array
1 |
|
Discretization
Hzw版离散化
1 |
|
STL (Standard Template Library)
queue
先進先出的綫性數據結構。
Definition
C++ 1
2
3
4template <
class T,
class Container = std::deque<T>
> class queue;Members
.push(T _element)
向隊列中壓入元素.pop()
彈出隊尾元素.empty()
查詢隊列是否爲空.size()
查詢隊列大小.front()
返回隊首元素.back()
返回隊尾元素
stack
先進後出的綫性數據結構。
Definition
C++ 1
2
3
4template <
class T,
class Container = std::deque<T>
> class stack;Members
.push(T _element)
向棧中壓入元素.pop()
彈出棧頂元素.top()
獲取棧頂元素.empty()
審察棧中是否爲空.size()
審查棧中元素數目
vector
不定长数组
Definition
C++ 1
2
3
4template <
class T,
class Allocator = std::allocator<T>
> class vector;Iterator
Definition
C++ 1
vector <T> :: iterator _iter;
Usage
C++ 1
2
3
4
5
6*_iter; // 取值
++_iter; // 向下一位移動
--_iter; // 向上一位移動
// 裝逼上天ノ練一:循環讀出矢量中的元素
for (vector <int> :: iterator _iter = vec.begin(); _iter != vec.end(); ++_iter)
printf("%d, ", *_iter);
Members
.push_back(T _element)
在最後添加元素.size()
審查矢量的元素數目.clear()
清空矢量.begin()
返回指向第一個元素的迭代器.end()
返回指向最後一個元素之後一位的迭代器.insert(vector <T> :: iterator _iter, T _element)
在迭代器指向位置前插入元素
set
集合
Definition
C++ 1
2
3
4
5template <
class T, // set::key_type/value_type
class Compare = less <T>, // set::key_compare/value_compare
class Alloc = allocator <T> // set::allocator_type
> class set;Members
.insert(T _element)
向集合中插入元素.erase(T _element)
從集合中刪除指定值的元素.clear()
清空集合.count(T _element)
清點集合中指定值的元素的數目.lower_bound(T _element)
返回指向第一個>=
指定值的元素的迭代器.upper_bound(T _element)
返回指向第一個>
指定值的元素的迭代器.equal_range(T _element)
返回一個pair(.lower_bound(T _element), .upper_bound(T _element))
map
映射
Definition
C++ 1
2
3
4
5
6template <
class Key, // map::key_type
class T, // map::mapped_type
class Compare = std::less <Key>, // map::key_compare
class Alloc = std::allocator <pair <const Key, T> > // map::allocator_type
> class map;Notes
- 超过
40w
最好别用, 时间复杂度会变成O(log N)
- 超过