c++ STL 工程实践的15条建议
来源:互联网 发布:产品旋转展示制作软件 编辑:程序博客网 时间:2024/05/20 04:30
STL是c++非常重要的一部分,它是很多大神的杰作,高效,稳定,可扩展性好,虽然STL确实存在难以调试,内存碎片的问题(现在机器的内存越来越大,内存碎片的问题基本不太可能成为系统瓶颈,但只要你使用恰当,它能显著提高生产力,并使代码更短,更易维护。
而在工程中,如果不养成好的使用习惯,也容易造成一些问题!
而自己在工程实践中,总结了一些建议
1. vector, map, set, list, queue, dequeue, stack 等容器存放的对象必须是可拷贝的,尤其注意深拷贝的情况,必须自己重载拷贝构造函数和=号, 最后对象仅仅只有数据成员,且数据成员没有指针。
2. vector, map, set, list, queue, dequeue, stack 等容器存放的对象最好不要是指针,因为多线程环境,对指针操作非常危险,也容易造成内存泄漏的问题,即使存放指针,最好使用智能指针。
3. 定义容器对象,最好在栈空间定义。
4. 尽量不定义全局的容器对象,即使要使用全局的容器,最好使用全局指针,并在某函数内new一个。
5.在栈空间最好定义容器对象,而不是使用容器指针,容器对象可以自动析构。
6.map的key最好是整形或者是string, 最好不要是指针类型;能不自己重载函数对象或者小于号的,就不要去重载,使用默认的。
7.set最好存单一数据类型,整形或者string, 如果是复杂数据,可以使用map替代会更加清晰。
8.判断一个容器是否为空,适应empty() 而不是 size() == 0。
9.vector在预知大致范围时候尽量先reserve, 这样可以在很多时候大大提高程序效率。
10.能用string的尽量不用char数组,除非一些特定需要和性能要求极高的情况。
11.能用STL的sort, partial_sort, 等标准算法的,尽量用STL算法。
12.多线程操作容器时尽量使用容器指针,而不是容器对象,对容器操作对指针加锁。
13.最好使用容器引用作为函数参数,减少拷贝。
14.尽量使用标准STL容器,除非特殊情况使用hash_map等扩展容器。
15.在重载函数对象operator()和<号时,最好内联。
- c++ STL 工程实践的15条建议
- c++ STL 工程实践的15条建议
- c++ STL 工程实践的15条建议
- c++ STL 工程实践的15条建议
- UI最佳实践的N条建议
- UI最佳实践的N条建议
- 人生的15条建议
- 人生的15条建议
- 实现对话人工智能的6条实践指导建议
- [C++]STL算法高效使用的一些建议
- [C++]高效定义STL比较函数的一些建议
- Javascript 最佳实践 10 条建议
- 送给我的15条人生建议
- 并发编程的 15 条建议(译)
- 并发编程的15 条建议
- 并发编程的 15 条建议(译)
- 并发编程的 15 条建议(译)
- 并发编程的 15 条建议(译)
- 以太坊私链的挖矿速度与难度值的关系
- python ~ pack、unpack
- 当DOM绑定多个事件时如何在执行之前做一次验证
- 数论公式--斯大林公式
- vfio进行网卡透传
- c++ STL 工程实践的15条建议
- java容器----HashMap
- Android中Xlistview的使用
- http自动转https【方法总结】
- python篇6_界面编程easygui
- top命令详解
- TCP端口扫描方式
- 关于MVC控制器导出Excel时MemoryStream流已关闭的问题
- android studio 代码块快捷键