【记录】C++STL容器/特有类 使用积累

STL容器共有成员函数

size() max_size()
empty()
begin() end()
clear()

【链接】csdn_STL中所有容器共有成员函数
 

双端队列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()函数

posted @ 2021-09-20 09:36  Xlucidator  阅读(39)  评论(0编辑  收藏  举报