随笔分类 - C/C++
摘要:本文将从这几方面讲解智能指针: 智能指针的应用场景分析 智能指针的性能分析: 为什么 shared_ptr 性能比 unique_ptr 差 指针作为函数参数时应该传,传值、传引用,还是裸指针? 对于智能指针的使用,实际上是对所有权和生命周期的思考 1.unique_ptr:专属所有权 1.1 un
阅读全文
摘要:1.Lambda表达式 lambda表达式实际提供了一个类似匿名函数的特性,匿名函数是在需要一个函数,但是又不想费力去命名一个函数的情况下使用的。 1.1 Lambda表达式基本语法 [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 { // 函数体 } 捕获列表分为以下几
阅读全文
摘要:condition_variable简介 condition_variable类是一个同步原语,与std::mutex一起使用,用于阻塞一个或多个线程,直到另一个线程修改一个共享变量(条件)并通知condition_variable。condition_variable主要有wait函数和notif
阅读全文
摘要:概述 要确保用new动态分配的内存空间再程序各条执行路径都能被释放是一件麻烦的事情。C++11模板库的头文件中定义的智能指针,std::shared_ptr模板,就可以用来部分解决这个问题。 只要将new运算符返回的指针p交给一个shared_ptr对象“托管”,就不用担心在哪里写delete p语
阅读全文
摘要:Map和Multimap STL提供的Map和Multimap是一种关联式容器,将key/value pair(键值/实值 对组)当做元素,进行管理。它们可以根据key的排序准则自动将元素排序。Multimap允许重复元素,map不允许。 Map和Multimap结构: 在使用map和multima
阅读全文
摘要:Set和Multiset STL提供的vector,list和deque属于序列式容器即可序群集,每个元素均有固定的位置,取决于插入时机和地点,和元素值无关。如果以追加的方式对一个群集置入六个元素,它们的排列次序将和置入次序一致。 而关联式容器为已序群集,元素位置取决于特定的排序准则。如果讲六个元素
阅读全文
摘要:Deque简介 Deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。允许快速地访地随机访问,但是和vector这种将所有对象保存在一块连续的内存块不同,Deque是采用多个连续的存储块,并且在一个映射结构中保存对这些块及顺序的跟踪。向deque两端添加或删除元素的开销很小。它不
阅读全文
摘要:STL简介 C++ STL(Standard Template Libiary标准模板库)是通用类模板和算法的集合,它提供了一些标准的数据结构的实现,如queues(队列),list(链表)和stack(栈)等。 C++ STL提供给程序员三类数据结构的实现: 序列容器: vector:从后面快速的
阅读全文
摘要:vector的原理特点 vector是一个线性顺序结构,相当于数组,但是大小可以不预先指定,并且自动扩展。所以完全可以将vector看作动态数组。 在创建一个vector后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector默认指定,这个大小就是cap
阅读全文
摘要:list简介 双向链表,可以从任何地方快速插入与删除 线性链表结构,数据由若干节点构成,每一个结点都包括一个信息块(实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,因为list存储在非连续的内存空间中,由指针有序的将元素链接起来 由于结构原因,list的随机检索
阅读全文