C++ STL(Standard Template Library)(一)
4/4/2019 4:50:15 PM
目录
1 vector:变长数组
1.1 头文件和引用
开始时候引入
#include<vector>
using namespace std;
1.2 定义
typename 可以是 int double char node
vector<typename> name;
vector数组 其中 ArrayName[0]~ArrayName[size-1]都是vector容器
vector<typename> Arrayname[size]
1.3 访问元素
(1)下标访问
vi[index]
(2)迭代器
//vi.begin()取vi首地址
vector<typename>::iterator it = vi.begin();
typename i =*it;
1.4 函数实例
(1)push_pack(x)添加一个元素
(2)pop_back()删除最后一个
(3)size()
(4)clear()
(5)insert 向任意迭代器位置插入
//vi 初始为 1 2 3 4 5
vi.insert(vi.begin()+2, -1)
//此时 1 2 -1 3 4 5
(6)erase()
//vi 初始化 1 2 3 4 5
vi.erase(vi.begin()+3)
//此时 1 2 3 5
earse(first,last) 删除[first,last)内元素
vi.erase(vi.begin()+1,vi.begin()+4)
//删除vi[1] vi[2] vi[3]
2 set:集合
内部自动排序,不含有重复元素
2.1 定义
set<typename> setname;
2.2 访问元素
不能通过下标访问 只能迭代器枚举
for(set<int>::iterator it=st.begin(); it!= st.end(); it++)
2.3 函数实例
(1)insert
插入后自动排序去重
(2)find
查找某个元素
(3)erase size clear
同vector
3 string
c语言中用char[]放字符串,STL中有string“# include”
3.1 定义
string str;
string str="abcd";
3.2 内容访问
(1)下标访问
string str = "abcd";
str[0];//a
(2)迭代器 同vector可对迭代器加减某个数字
3.3 函数
(1) += 可以拼接两个string
(2)< <= > >= 比较字典序
(3)length() size()
(4)insert()
//两种
//插入指定位置
insert(pos,string)
//待插入字符串被分割插入pos
insert(pos,it_first,it_end)
(5)erase
//删除单个元素
str.erase(it)
str.erase(str.begin()+1)
//删除一个区间内所有元素
str.(it_first,it_end)
//删除一个区间内所有元素
str.erase(pos,length)
//初始化abcdefg 删除3号开始的2个字符 de
str.erase(3,2)
(6)substr
substr(pos,len)
返回从pos位置开始、长度为len的子串
//初始化 abcdefgh
//返回 bcdef
str.substr(1,5)
(7)find返回string中第一次出现的位置
//匹配失败是返回值
string::npos
//初始化abcdefg
//值为0
str.find("abc")
//值为string::npos
str.fing("xyz")
(8)repalce()
//位置 长度 替换为 str2
str.replace(pos,len,str2)
//初始化“abcdefg”
//返回ahellodefg bc替换为hello
str.replace(1,2,"hello")