【记录】C++STL容器/特有类 使用积累
STL容器共有成员函数
size()
max_size()
empty()
begin()
end()
clear()
双端队列deque
1.创建与初始化:名称空间std
deque<int> dq;//会随机生成一个元素
deque<int> dq(8); //构造一个有8个元素的int型队列,默认初始化值(value)为0
deque<int> dq(8,50);//创建一个有8个元素的int型队列,默认初始化值(value)都设为50
deque<int> dq(dq.begin(), dq.end()); //迭代器创建队列
deque<int> dq1(dq);//拷贝构造队列
int n[]={1,2,3,4};
deque<int> dq(n,n+4);
deque<int> dq(&n[0],&n[4]); //将元素下标[0,4)的内容作为队列初值
//注意:末尾指针指向结束元素的后一个
2.基础出入队:
push_back()
、push_front()
:入队
pop_front()
、pop_back()
:出队,无返回值
3.容器函数:
size()
:返回容器大小
max_size()
:返回容器最大容量
empty()
:判断是否为空
4.遇到std::bad_alloc:
注意有关出入队成员函数是否接收了正确的参数;当然数据量太大也有可能;deque不是连续分配地址的
【链接】deque使用详解
集合set
映射map
字符串string
string类其实是STL中basic_string的实例
1.容器函数相关:
size()
、length()
:返回字节数(即字符数,不管是否有汉字),不包括'\0'。两者咩区别,源码一致。string类最初只有length(),沿用C习惯;后为兼容STL加入size(),作为STL容器属性存在。
max_size()
:获取支持的字符串大小上限,其实是unsigned(-1),所以依据平台和编译选项而各异,即所有位置1的情况。本地32位环境就是\(4294967295=2147483647+2147483648\)。当然实际容量受计算机内存限制。
resize()
:修改字符数量,可不是修改最大支持的字符数量(想屁嘞)
empty()
:上升到容器层面,那'\0'肯定也算在内,所以string永远不空的了
2.追加内容:
push_back('x')
:追加单字符
append()
:追加字符串(string类型、cstring类型)、多个字符
+=
:重载,追加字符串或单个字符
·【链接】C++的string类型中关于append函数、push_back函数和+=运算符的区别_良晨的技术站-程序员宅基地
3.查找子串:
find("xx")
:寻找子串,返回该子串在原字符串中的下标位置(整型string::size_type);若未找到,返回特殊标志string::npos,值为-1
if(s.find("asd")==s.npos) ...
find_first_of("xx")
:返回子串首次出现位置
find_last_of("xx")
:返回子串最后出现位置
rfind("xx")
:同find_last_of,反向查找——子串最后出现的位置
find("xx",n)
:返回子串在下标n之后出现的位置(包括n)
·【链接】C++ string中的find()函数