• 9.4-9.6 章读书笔记


    9.4 vector对象是如何增长的

    1. capacity 告诉我们容器在不扩张内存空间的情况下可以容纳多少个元素
    2. reserve告诉我们通知容器它应该准备保存多少个元素(不改变容器中元素数量,仅影响vector预先分配多大的内存空间)
    3. shrink_to_fit()capacity减少为与size相同大小
        vector<int> ivec;
        cout << "ivec: size " << ivec.size() << " capacity: " << ivec.capacity() << endl;
        // 添加24个元素
        for (int i = 0; i < 24; i++) {
            ivec.push_back(i);
        }
        // size为24,capacity大于等于24
        cout << "ivec: size " << ivec.size() << " capacity: " << ivec.capacity() << endl;
    
        ivec.reserve(50);
        cout << "ivec: size " << ivec.size() << " capacity: " << ivec.capacity() << endl;
    
        while (ivec.size() != ivec.capacity()) {
            ivec.push_back(0);
        }
        cout << "ivec: size " << ivec.size() << " capacity: " << ivec.capacity() << endl;
    
        ivec.push_back(0);
    
        cout << "ivec: size " << ivec.size() << " capacity: " << ivec.capacity() << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    9.5 额外的string操作

    1. 构造string的其他方法

    string s(cp, n) s是指向数组中前n个字符的拷贝
    string s(s2, pos2) s是string s2从下标pos2开始的字符的拷贝
    string s(s2, pos2, len2) s是从string s2从下标pos2开始len2字符的拷贝

    • s.substr(pos, n) 返回一个string, 包含s中从pos开始的n个字符的拷贝
    • s.insert(pos, args) 在pos之前插入args制定的字符
    • s.erase(pos, len) 删除从位置pos开始的len个字符
    • s.assign(args) 將s中的字符替换为args指定的字符
    • s.append(args) 將args追加到s
    • s.replace(range, args) 删除s中范围range内的字符,替换为args指定的字符
    • s.find(args) 查找s中args第一次出现的位置
    • s.rfind(args) 查找s中args最后一次出现的位置
  • 相关阅读:
    【C++入门篇】深入理解函数重载
    【CVPR2023】DetCLIPv2:通过单词-区域对齐实现可扩展的开放词汇目标检测预训练...
    计算机提示d3dcompiler43.dll缺失怎么修复,多个解决方法分享
    python 定时任务apscheduler的使用
    [HFCTF2020]BabyUpload session解析引擎
    为什么不推荐在Spring Boot中使用@Value加载配置
    jmeter学习记录
    什么是边缘计算网关?
    ubuntu安装lua
    Revit SDK 介绍:Ribbon 界面
  • 原文地址:https://blog.csdn.net/L_H_L/article/details/128063191