vector动态数组

vector vc

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=() 它将新值分配给向量容器。

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 dq;

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 { … };