《C++ Primer》随记
1. Vector类型是快速增加的,定义一个空的再添加成员,比定义指定长度的集合操作更快。因此即此能预判成员数量也没必要定义长度。
2. 在for循环时直接判断Vector的size,因为size是内联函数,效率很高,没必要增加一个变量保存size再判断。
3. 在C++中循环Vector成员时使用!=size,而不推荐<size
4. 标准库中的string和直接字符串(如:"123")是两个不同的数据类型。
5. 现代C++中推荐使用vector代替数组,用string代替char数组,用迭代器实现同样功能的指向数组的指针。当只有在确定性能需要时才使用数组这种原始数据类型。
6. int a=2; 则if(a==true)是否定的,if (a)是肯定的。bool b = 2; 则if(b==true)是肯定的
7. int a=2+true;则a的值为3,在运算中true转换为1,false转换为0
8. 在for这类循环时,循环变量要用++i,而不是i++,因为i++需要先保存旧值再计算,比++i需更多的操作步骤,作者说如果i是int类型时编译器优化会节省这一步,但其他类型也许会付出相当大的代价。如果可以尽量用前置运算符。
9. 在函数参数传递时string和vector都会另复制一份传递,相当于值传递,如果不想复制则需要引用传递,如 vector &v。在在般情况下Vector作为参数传入时推荐使用迭代器传入(相当于引用传递)。
10.函数不能返回内部变量的引用,因为函数返回时这些局部变量会回收(说明:好在编译器会检查这个)
11.和普通函数不同,内联函数(inline)应该在头文件中定义。
12.顺序容器:vector和degue是内存顺序存储,可随机存储,但中间插入和删除慢(因为要移动元素),vector在尾端操作快,而degue两端操作都快。list则是链表存储,不能随机访问。适配器stack和queue使用默认窗口即可。
13.关联容器:map和multimap是key-value结构,set和multiset只能存储一个key值。key的要求是能进行大小比较操作,在容器中是按照key从小到大排序的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2011-03-21 C++Builder2010多线程调用WebService的问题