C++每日学习笔记DAY10

1.STL(标准模板库)
    1.1 STL的六大组件
        1.1.1 容器、算法、迭代器、仿函数、适配器、空间配置器
    1.2 容器 --Container
        1.2.1 序列式容器
        1.2.2 关联式容器----有key,起到索引作用
    1.3 算法 --algorithm
        1.3.1 质变算法
        1.3.2 非质变算法
    1.4 迭代器 --iterator
        1.4.1 双向迭代器
        1.4.2 随机访问迭代器(功能最强,可以支持跳跃式的访问)
    1.5 优点
        1.5.1 不需再次安装额外的东西,直接就可以使用
        1.5.2 高复用性、高移植性、高性能
        1.5.3 数据和算法分离,利用迭代器进行沟通的
        1.5.4 程序员可以不用考虑STL具体的实现过程,仅仅熟悉STL的使用就行。因而就可以用多余的精力全放在程序开发的别的方面
2.容器算法迭代器初识
    2.1 格式为: vector<类型> v 容器
    2.2 采用尾插方式给容器v中装入数据,v.push_back()
    2.3 起始迭代器  v.begin() --指向容器中第一个元素
    2.4 结束迭代器    v.end() ---指向容器中最后一个元素的下一个位置
    2.5 三种遍历方式,其中如果调用系统遍历for_each() 需要引用头文件 algorithm
        2.5.1 第一种遍历--while方法
        2.5.2 第二种遍历--for循环,例如for(vector<int>::iterator it  = v.begin(); it!=v.end(); it++){cout << *it << endl;}
        2.6.3 第三种遍历--for_each(),例如for_each(v.begin(), v.end(),myPrint);
    2.6 内置数据类型、自定义数据类型、容器嵌套容器的练习
    2.7 普通指针也是属于一种迭代器
3.string容器简述
    3.1 string构造、赋值
    3.2 字符存取:[]和at两者之间的区别
        3.2.1 at方式存取时,访问越界会抛出out_of_range异常
        3.2.2 []存取方式会出现程序中断、
    3.3 拼接、查找、替换
        3.3.1 +=运算符、append 用于拼接
        3.3.2 查找find,如果查不到返回-1, rfind查找是由右往左查
        3.3.3 替换字符串用replace
    3.4 比较 compare
        3.4.1 如果两字符串相等是=1,字符串1大 >0,字符串1 小<0
    3.5 子串
        3.5.1 string subtr(int pos =0, int n = npos) const;//返回由pos开始的n个字符组成
的字符串
        3.5.2 截取网址的单词保存至容器中(练习)
    3.6 插入 insert
    3.7 删除 erase
    3.8 char * 和string 转换
        3.8.1 char*转string:调用string有参构造,string str(“char *”)
        3.8.2 string转 char*:调用.c_str();const char *
        3.8.3 编译器可以将char* 隐式类型转换为string,反之不可以
    3.9 小写转大写 和 大写转小写 
        3.9.1 转大写 toupper
        3.9.2 转小写 tolower
4.Vector 容器
    4.1 与数组类型相似,但是是动态数组
    4.2 动态分配内存,并不是原有空间下再次分配,而是重新找一个新的空间将原有数据拷贝到新空间下,然后释放掉原有空间
    4.3 构造、赋值行为
    4.4 交换swap
    4.5 size:用于计算容器的大小
    4.6 capacity:用于计算容器的容量
    4.7 empty:用于判断容器是否为空
    4.8 resize:用于重新指定容器长度
        4.8.1 如果比原来的长,默认用0填充,但是用户也可以根据自己需求用第二个参数代替默认值
        4.8.2 如果比原来的短,超出的部分元素会直接被删除
    4.9 reserve:用于预留空间,但是不进行初始化
    4.10 at、[]:用于对元素存取,at越界会抛出异常out_of_range;[]越界会直接挂掉程序
    4.11 front:用于标识容器第一个元素
    4.12 back:用于标识容器最后一个元素
    4.13 insert(迭代器):用于向容器中插入元素
    4.14 erase(迭代器):用于删除容器中元素
    4.15 clear:用于清空容器中所以元素
    4.16 push_back:用于向容器中尾插元素
    4.17 pop_back: 用于容器中尾删元素
    4.18 通过练习认识swap和reserve
        4.18.1 用swap来收缩内存
        4.18.2 用reserve预留空间
    4.19 逆序遍历需要迭代器 reverse_iterator    
    4.20 可以通过给迭代器加个数字来判断迭代器是否支持随机访问
5.deque 容器
    5.1 双端数组---没有容量--内部用中控器控制连续分段空间
    5.2 可以对头部进行插入删除
    5.3 和vector的测试接口相似
    5.4 不同点是:头部插入 push_front ;头部删除 pop_front

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值