学习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个参数))

 

成员函数和非成员函数

广义指针;分配器对象管理内存

posted @ 2021-03-11 21:57  Macondo's  阅读(38)  评论(0)    收藏  举报