随笔分类 - c/c++
摘要:不论是泛型思维或STL的实际运用,迭代器(iterators)都扮演者重要的角色。迭代器的中心思想在于:将数据容器(container)和算法分开,彼此独立设计,最后再以迭代器这种工具将两者粘合起来。 一.模板特化与偏特化 假设下面有一个class template如下:templateclas...
阅读全文
摘要:STL的空间配置器作为STL六大部件的重要组成部分,它总是隐藏在一切组件的背后.它主要负责动态空间的分配、释放等管理工作。整个STL的操作对象(所有的数值)都存放在容器之内,而容器一定需要配置空间以置放资料。而这就是空间配置器(allocator)的职责了.一.SGI的空间配置器—std::al...
阅读全文
摘要:1.Pimpl概念在进行项目开发中可能遇到的问题,程序编译耗时很长,每一次简单修改接口之后项目都会被完全重新编译,浪费了很多时间。这个机制是Private Implementation的缩写,顾明思议,将实现私有化,力图使得头文件对改变不透明.它的优点很多,诸如降低编译依赖、提高重编译速度之类的工具...
阅读全文
摘要:本章主要介绍了c++类中成员变量、函数对象的在内存中布局. 当c++类中不包含virtual机制类的函数时,内部nostatic member被包含在每一个class object之中,就想c struct一样,而member function虽然含在class声明之内,却不出现在object之中...
阅读全文
摘要:bind函数在c++11之前,要绑定某个函数、函数对象或者成员函数的不同参数值需要用到不同的转换器,如bind1st、bind2nd、fun_ptr、mem_fun和mem_fun_ref等.在c++11中,绑定参数的方法得以简化.c++11提供了"一站式"绑定模板bind,其用法为:#includ...
阅读全文
摘要:迭代器迭代器源于指针而高于指针,并成为分割容器与算法的一条界河.在一个共同的迭代器界面约定之下,不同的算法与不同的容器只要其迭代器要求一致就可以相互组合.迭代器分类c++标准库中对迭代器进行了详细的分类,迭代器按其所能提供的操作,可以分为五种类型,分别为: 输入迭代器(input iterator...
阅读全文
摘要:最近一直在研究c++模板编程,虽然有些困难,但希望能够坚持下去.今天,在书上看见一个讨论模板编程typename与class两个关键字的区别,觉得挺有意义的,就把它们给总结一下. 先看一个例子:templatetypename C::value_type sum(C &c){ ...
阅读全文
摘要:前言:C++提供了一种特例机制,对于某个已有模板,可以为某个或者某组模板参数类型另外指定一种变体,以应付原模板无法处理的问题,或者提供更高效的实现方案.这种机制就称为模板特例.模板特例一个典型的例子就是C++标准库中的容器类模板vector。与数组相似,vector是一种将数据连续存放的容器.但与数...
阅读全文
摘要:最近一直看c++相关的项目,但总是会被c++类中的静态成员变量与静态成员函数的理解感觉很是模糊,不明白为什么类中要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下。静态成员的概念: 静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因...
阅读全文
摘要:概念: 像一个普通的链表结点中,其中成员next通常是指向同类型结点的指针.这就约束了链表中结点必须是同一类型,从而整个链表都只能保存同一类型的数据。而异质链表则是让next指向任何一种类型,也包括存有其他类型值得结点。这里就采用模板的方式.数据结构:templatestruct hetero_no...
阅读全文
浙公网安备 33010602011771号