C++_STL

vector动态数组
vector
vc.back() 返回最后一个元素
vc.front() 第一个元素
swap() 交换两个Vector。
push_back() 在Vector最后添加一个元素。
pop_back() 它从向量中删除最后一个元素。
empty() 判断Vector是否为空(返回true时为空)
insert() 它将在指定位置插入新元素va.insert(va.begin()+1,1,4);
erase() 删除指定的元素
resize() 它修改向量的大小。
clear() 它从向量中删除所有元素。
size() 返回Vector元素数量的大小。
capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)
assign() 它将新值分配给向量。
operator=() 它将新值分配给向量容器。
end() 返回最末元素的迭代器(实指向最末元素的下一个位置)
emplace() 它将在位置pos之前插入一个新元素。
emplace_back() 它在末尾插入一个新元素。
rend() 它指向向量的第一个元素之前的元素。
rbegin() 它指向向量的最后一个元素。
begin() 返回第一个元素的迭代器。
max_size() 返回Vector所能容纳元素的最大数量(上限)。
cend() 它指向量中的last-last-element。
cbegin() 它指向量的第一个元素。
crbegin() 它指的是向量的最后一个字符。
crend() 它指的是向量的第一个元素之前的元素。
data() 它将向量的数据写入数组。
shrink_to_fit() 它减少了容量并使它等于向量的大小。
stack 栈
s.push(ele) 元素ele入栈,增加元素
s.pop() 移除栈顶元素
s.top() 取得栈顶元素(但不删除)
s.empty() 检测栈内是否为空,空为真
s.size() 返回栈内元素的个数
queue 队列
q.front() 返回队首元素
q.back() 返回队尾元素
q.push(element) 尾部添加一个元素element 进队
q.pop() 删除第一个元素 出队
q.size() 返回队列中元素个数,返回值类型unsigned int
q.empty() 判断是否为空,队列为空,返回true
deque双端队列
#include
deque
push_back(x)/push_front(x) 把x插入队尾后/队首
back()/front() 返回队尾 / 队首元素
pop_back() / pop_front() 删除队尾 / 队首元素
erase(iterator it) 删除双端队列中的某一个元素
erase(iterator first,iterator last) 删除双端队列(first,last)的元素
empty() 判断deque是否空
size() 返回deque的元素数量
clear() 清空deque
sort(q.begin(), q.end()) 从小到大
map影射
std::map<int,int>::iterator it=a.begin(); 迭代器
myMap.insert(std::pair<int, std::string>(1, “one”));
myMap.insert(std::make_pair(2, “two”));
myMap[3] = “three”; // 使用索引操作符插入
std::cout << myMap[1] << std::endl; // 输出 “one”
遍历
for (const auto &pair : myMap) { std::cout << pair.first << “: “ << pair.second << std::endl; }
查找
auto it = myMap.find(2); if (it != myMap.end()) { std::cout << “Found: “ << it->second << std::endl; } else { std::cout << “Not found” << std::endl; }
删除
myMap.erase(1); // 删除键为1的元素
算法
accumulate 元素统计
binary_search 二分查找
copy 拷贝
copy_backward 逆向拷贝
copy_n 拷贝n个元素
count 计数
count_if 在特定条件下计数
equal 判断两个区间相等与否
fill 填充元素
fill_n 填充元素n次
find 循环查找
find_if 循环查找符合特定条件元素
find_end 查找某个子序列的最后一次出现点
find_first_of 查找某个元素首次出现点
for_each 对区间内的每隔一元素实行某种操作
is_heap 判断某区间是否为一个heap
is_sorted 判断某区间是否已排序
lexicographical_compare 以字典顺序进行比较
max 获取最大值
max_element 最大值所在位置
merge 合并两个序列
min 获取最小值
min_element 最小值所在位置
next_permutation 获取下一个排列组合
pre_permutation 获取前一个排列组合
partial_sort 局部排序
partial_sum 局部求和
partition 分割
remove 删除某类元素
remove_copy 删除某类元素并将结果拷贝到另一个容器中
remove_if 有条件的删除某类元素
replace 替换某类元素
replace_if 有条件的替换
reverse 反转序列
sort 排序(不稳定)
stable_partition 分割并保持元素的相对次序
stable_sort 分割并保持相等元素的相对位置(稳定排序算法)
unique 取出重复性元素
make_heap 创建堆
push_heap 堆插入
pop_heap 堆删除
sort_heap 堆排序
迭代器
// vector中:
typedef T* iterator;
iterator begin();
iterator end();
find(v.beign(), v.end(), 5);
// list中
typedef list_iterator<T, T&, T*> iterator;
iterator begin();
iterator end();
find(l.begin(), l.end(), 5);
适配器
template < class T, class Container = deque
class stack { … };
template < class T, class Container = deque
class queue { … };