C++经常使用的数据结构数组
序列式容器数据结构
vector(向量、有序数列),list(双向链表),deque(双端队列)函数
适配器容器spa
stack(栈),queue(队列).net
关联式容器指针
map(映射、键值对二叉树),set(集合、值二叉树)对象
vectorblog
初始化排序
函数索引
push_back 在数组的最后添加一个数据
pop_back 去掉数组的最后一个数据
at 获得编号位置的数据
begin 获得数组头的指针
end 获得数组的最后一个单元+1的指针
front 获得数组头的引用
back 获得数组的最后一个单元的引用
max_size 获得vector最大能够是多大
capacity 当前vector分配的大小
size 当前使用数据的大小
resize 改变当前使用数据的大小,若是它比当前使用的大,者填充默认值
reserve 改变当前vecotr所分配空间的大小
erase 删除指针指向的数据项
clear 清空当前的vector
rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
empty 判断vector是否为空
swap 与另外一个vector交换数据
更多http://www.cplusplus.com/reference/vector/vector/
list
不支持根据下标随机存取元素,利用迭代器遍历
初始化
list<int>lst1; //建立空list
list<int> lst2(5); //建立含有5个元素的list
list<int>lst3(3,2); //建立含有3个元素的list
list<int>lst4(lst2); //使用lst2初始化lst4
list<int>lst5(lst2.begin(),lst2.end()); //同lst4
函数
Lst1.assign() 给list赋值
Lst1.back() 返回最后一个元素
Lst1.begin() 返回指向第一个元素的迭代器
Lst1.clear() 删除全部元素
Lst1.empty() 若是list是空的则返回true
Lst1.end() 返回末尾的迭代器
Lst1.erase() 删除一个元素
Lst1.front() 返回第一个元素
Lst1.get_allocator() 返回list的配置器
Lst1.insert() 插入一个元素到list中
Lst1.max_size() 返回list能容纳的最大元素数量
Lst1.merge() 合并两个list
Lst1.pop_back() 删除最后一个元素
Lst1.pop_front() 删除第一个元素
Lst1.push_back() 在list的末尾添加一个元素
Lst1.push_front() 在list的头部添加一个元素
Lst1.rbegin() 返回指向第一个元素的逆向迭代器
Lst1.remove() 从list删除元素
Lst1.remove_if() 按指定条件删除元素
Lst1.rend() 指向list末尾的逆向迭代器
Lst1.resize() 改变list的大小
Lst1.reverse() 把list的元素倒转
Lst1.size() 返回list中的元素个数
Lst1.sort() 给list排序
Lst1.splice() 合并两个list
Lst1.swap() 交换两个list
Lst1.unique() 删除list中重复的元素
更多http://www.cplusplus.com/reference/list/list/
deque
初始化
deque deqT; | 默认构造形式 |
deque(beg, end); | 将[beg, end)区间中的元素拷贝给自己。 |
deque(n, elem); | 将n个elem拷贝给自己。 |
deque(const deque &deq); | 拷贝构造函数。 |
函数(原文https://blog.csdn.net/claroja/article/details/88966715)
assign(beg, end); 将[beg, end)区间中的数据拷贝赋值
assign(n, elem); 将n个elem拷贝赋值
deque& operator=(const deque &deq); 重载等号操做符
swap(deq); 缩减容量
deque.size(); 元素个数
deque.empty(); 是否为空
deque.resize(num); 设置deque大小,多余默认填充,少于删除
deque.resize(num, elem); 设置deque大小,多余elem填充,少于删除
push_back(elem); 尾部添加
push_front(elem); 头部添加
pop_back(); 尾部删除
pop_front(); 头部删除
at(idx); 索引,抛出异常
operator[]; 索引,报错
front(); 返回第一个数组
back(); 返回最后一个数据
insert(pos,elem); pos位置插入elem
insert(pos,n,elem); pos位置插入n个elem
insert(pos,beg,end); pos位置插入[beg,end)区间的数据
clear(); 清空容器
erase(beg,end); 删除[beg,end)区间的数据,返回下一个数据的位置。
erase(pos); 删除pos位置的数据,返回下一个数据的位置
更多http://www.cplusplus.com/reference/list/list/
stack
更多http://www.cplusplus.com/reference/stack/stack/
queue
queue 和 stack 有一些成员函数类似,但在一些状况下,工做方式有些不一样:
map
begin() 返回指向map头部的迭代器
clear() 删除全部元素
count() 返回指定元素出现的次数
empty() 若是map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回能够容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
更多http://www.cplusplus.com/reference/map/map/
set
更多http://www.cplusplus.com/reference/set/set/
C++的:: 是做用域,若是想在类的外部引用静态成员函数,或在类的外部定义成员函数都要用到。使用命名空间里的类型或函数也要用到(如:std::cout, std::cin, std::string 等等)
起个别名
typedef list<int> LISTINT;
LISTINT list;
咱们导入window.h使用Sleep()方法,注意:第一个S要大写,括号中的表示的整数倍的毫秒
Sleep(1000);表示休息一秒