学习STL#1
string模板类
string >>读取遇到空白字符并不删除
指定分界符的输入,换行符不再是停止符号getline(hi,’:’)
有最大读取界限,string::npos规定的整数
< == !=重载 ;lenth(),size(),都可以返回字符数;find()函数,找不到是返回string::npos
智能指针模板类 包含头文件<memory>
指针设置为对象,在对象过期时,让其析构函数删除内存
unique_ptr<>;shared_ptr<> 初始化语法unique_ptr<int> ps (new int)
explicit构造函数,将指针作为参数,注意explicit
注意
1.指针不可以指向非堆内存
2.所有权概念。unique只有一个指针有所有权,在将一个指针赋值给另一个的时候,如果源是临时右值,则允许,如果存在一段时间,则会出现编译阶段错误。赋值使用move()
3.引用计数
4.unique_ptr可以指向new[],shared_ptr不可以
5.将unique_ptr赋给shared_ptr满足的要求相同
STL
通用的接口:
begin() end() 返回迭代器
for_each()接受3个参数,区间,函数对象。函数将被指向的函数应用于容器的各个元素,但是函数不可以修改容器元素的值,可以代替for循环,避免显式使用迭代器
sort()要求容器支持随机访问。1.接受定义区间,使用类型元素已经定义的<2.容器元素是用户定义对象,应定义operator<3.接受定义区间和函数对象,用函数对象来排序
基于范围的for循环:逐个访问
int hi{1,2,3,4,5}; for(int x:hi) cout<<x;
和for_each()相似,但是可以使用引用从而来修改元素
for(auto x:hi)hhh(x);
迭代器:遍历容器的对象,名称为interator。对不同的容器定义有不同的迭代器实现,迭代器使得算法独立于数据结构。如vector<double>::interator p(也可以使用自动类型推断 auto)
vector模板类:支持随机访问;push_back();erase()删除区间中的元素;insert(插入位置,另一个容器插入区间(2个参数))
成员函数和非成员函数
广义指针;分配器对象管理内存

浙公网安备 33010602011771号