随笔分类 -  STL使用总结及源码剖析

总结《C++标准库》中STL容器以及算法的基本用法; 总结《STL源码剖析》中的核心功能
《Linux高性能服务器编程》阅读笔记
摘要:bind 成功时返回0,失败时返回 1并设置errno。其中,两种常见的errno是EACCES和EADDRINUSE,他们的含义分别是: EACCES :被绑定的地址是受保护的地址,仅有超级用户可以访问 EADDRINUSE :被绑定的地址正在使用中。 listen 的 backlog 参数表示: 阅读全文

posted @ 2018-06-16 19:29 ukernel 阅读(378) 评论(0) 推荐(0) 编辑

C++标准库(七)之图解bind函数对象
摘要:bind与普通函数的绑定 1. bind可以将用户提供的需要一个参数的函数转换为一个不需要参数的函数对象: 2.使用非成员函数,在使用前和使用时提供参数: bind与类的非静态成员函数的绑定 1.非静态函数成员的使用需要一个隐式的this参数 2.也可以将一个隐式的函数指针显式的传递给需要一个参数的 阅读全文

posted @ 2018-06-16 19:27 ukernel 阅读(515) 评论(0) 推荐(0) 编辑

C++标准库(七)之iterator
摘要:iterator iterator模式:提供一种方法,使之能依次访问容器内的各个元素,而又不暴露该聚合物内部的表述方式。 STL的中心思想是将算法与数据结构分离,彼此独立设计,最后在用iterator将他们结合在一起,获得最大的适配性。 vector 设计理念 vector是动态空间,随着元素的加入 阅读全文

posted @ 2018-06-16 19:24 ukernel 阅读(11069) 评论(0) 推荐(1) 编辑

C++标准库(六)之traits技术
摘要:traits技术 原理:利用template的参数推导机制获取传入的参数型别。 这种程度,依旧会遇到一个问题:如果不是一个class type(比如指针,引用),就无法进行正确的参数推导。可以使用模板偏特化来处理这种情形: 我们需要处理的核心问题: 通过traits技术如何获得iterator描述的 阅读全文

posted @ 2018-06-16 19:21 ukernel 阅读(1069) 评论(0) 推荐(0) 编辑

SGI STL内存管理
摘要:在SGI STL版本的内存管理中,使用这样一种方式来分配内存: 内存分配+对象初始化 。首先是分配内存,其次是根据对象的类型(是否为POD【Plain of Data】)来使用最有效的方式来初始化对象。回收内存也是用同样的方式: 析构对象+回收内存 ,根据对象是否为POD类型,确定最有效的析构方式。 阅读全文

posted @ 2018-06-16 19:17 ukernel 阅读(230) 评论(0) 推荐(0) 编辑

C++标准库(五)之智能指针源码剖析
摘要:_Mutex_base _Sp_counted_base_Impl _Sp_deleter __shared_count __weak_count __shared_ptr shared_ptr __weak_ptr weak_ptr 类型声明 继承关系 其中,很明显的可以看出,shared_ptr 阅读全文

posted @ 2018-06-16 19:16 ukernel 阅读(1654) 评论(0) 推荐(0) 编辑

C++标准库(四)之String
摘要:String 常见操作 产生C String和字符数组 添加字符 安插字符 删除字符 替换字符 查找 字符串剪切 数值转换 阅读全文

posted @ 2018-06-16 19:07 ukernel 阅读(162) 评论(0) 推荐(0) 编辑

C++标准库(三)之STL算法
摘要:算法头文件: 算法简介:STL算法采用覆盖模式而非安插模式,所以调用者必须保证有足够的操作空间。 函数对象类型声明: UnaryProc:Op(elem),无返回值 CompFunc:Op(elem1,elem2),返回True或者False UnaryPredicate:Op(elem),返回Tr 阅读全文

posted @ 2018-06-16 19:05 ukernel 阅读(237) 评论(0) 推荐(0) 编辑

C++标准库(二)之容器
摘要:Vector 非更易性操作 元素访问 安插与移除 Deque 双端可变数组 非更易性操作 元素访问 安插与移除 List 双向队列 非更易型操作 元素访问 安插与移除 容器特有操作 非更易型操作 特殊的查找函数 安插与移除 Map Map的Key是常量数据,Value是可更改的,实现方式为红黑树 创 阅读全文

posted @ 2018-06-16 19:01 ukernel 阅读(358) 评论(0) 推荐(1) 编辑

C++标准库(一)之新语言特性
摘要:新语言特性 nullptr 被解释为一个 ,不同于 NULL 被解释为一个 可以用 auto 在编译期完成自动推导,不会影响执行期的速度 新的 for 循环方式: rvalue reference 也是一个 reference ,也就是说,下面这段代码是无效的: 关键字: expllicit 意味着 阅读全文

posted @ 2018-06-16 19:00 ukernel 阅读(254) 评论(0) 推荐(0) 编辑

导航