导航

随笔分类 -  STL

摘要:STL算法概述简介:STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象注意:编译器无法检测出所传递的迭代器是一个无效形式的迭代器,当然也无法给出算法函数错误的提示,因为迭代器并不是真实的类别,它只是传递给函数模... 阅读全文

posted @ 2014-07-24 09:13 ggzone 阅读(134) 评论(0) 推荐(0)

摘要:让自定仿函数也可以使用函数配接器:对于自定仿函数,如果希望和函数配接器搭配使用,就必须满足某些条件:必须提供一些型别成员来反映其参数和返回值类型。为方便程序员,标准库提供以下结构:一元: template struct unary_function { // base class fo... 阅读全文

posted @ 2014-07-23 15:40 ggzone 阅读(182) 评论(0) 推荐(0)

摘要:仿函数三大妙处:1、仿函数比一般函数更灵巧,因为它可以拥有状态。事实上对于仿函数,你可以同时拥有两个状态不同的实体。2、每个仿函数都有其型别。因为你可以将仿函数的型别当作template参数来传递,从而指定某种行为模式,容器型别也会因为仿函数的不同而不同。3、执行速度上,仿函数通常比函数指针更快。就... 阅读全文

posted @ 2014-07-23 09:35 ggzone 阅读(309) 评论(0) 推荐(0)

摘要:迭代器标签:C++标准程序库为每一种迭代器提供了一个迭代器标志,用来作为迭代器的标签:namespace std{ struct output_iterator_tag{}; struct input_iterator_tag{}; struct forward_iterator_tag:publi... 阅读全文

posted @ 2014-07-22 11:02 ggzone 阅读(187) 评论(0) 推荐(0)

摘要:迭代器是一个纯粹的抽象概念:任何东西,只要其行为类似迭代器,它就是一个迭代器。因此,你可以撰写一些类别(classes),具备迭代器接口,但有着各不相同的行为。C++标准程序库提供了数个预先定义的特殊迭代器,亦即所谓迭代器配接器(iterator adapters)。它们不仅起辅助作用,还能赋予... 阅读全文

posted @ 2014-07-21 17:56 ggzone 阅读(169) 评论(0) 推荐(0)

摘要:迭代器(iterator)是连接容器和算法的纽带,为数据提供了抽象,使写算法的人不必关心各种数据结构的细节。迭代器提供了数据访问的标准模型——对象序列,使对容器更广泛的访问操作成为可能。根据迭代器所支持的操作不同,在STL中定义了如下5种迭代器:迭代器类别说明输入从容器中读取元素。输入迭代器只能... 阅读全文

posted @ 2014-07-21 11:25 ggzone 阅读(160) 评论(0) 推荐(0)

摘要:STL容器能力一览表VectorDequeListSetMultisetmapMultimap典型内部结构dynamicarrayArray of arraysDoublyLinked listBinary treeBinary treeBinary treeBinary tree元素ValueVa... 阅读全文

posted @ 2014-07-19 16:33 ggzone 阅读(455) 评论(0) 推荐(0)

摘要:该例展示以下技巧:如何使用map如何撰写和使用仿函数如何在执行期定义排序规则如何在“不在乎大小写”的情况下比较字符串#include#include#include#include#includeusing namespace std;class RuntimeStringCmp{public: e... 阅读全文

posted @ 2014-07-17 16:30 ggzone 阅读(154) 评论(0) 推荐(0)

摘要:预留容量的两类方式:1、不调用默认的构造函数 vector v; v.push_back(111); v.reserve(20); std::copy(v.begin(), v.end(), ostream_iterator(cout," "));//只能打印出111;2、调用默认构造... 阅读全文

posted @ 2014-07-15 10:57 ggzone 阅读(178) 评论(0) 推荐(0)

摘要:例:transform(coll1.begin(), coll1.end(), back_inserter(coll2), bind2nd(multiplies(), 10));1、调用模板函数bind2nd,第一个参数为multiplies临时对象。// TEMPLATE FUNCTION bin... 阅读全文

posted @ 2014-07-14 16:30 ggzone 阅读(336) 评论(0) 推荐(0)

摘要:标准库中有四个template function,分别定义了!=,>,=四个比较操作符。它们都是利用操作符==和 inline bool operator!=(const _Ty& _Left, const _Ty& _Right) { // test for inequality, in term... 阅读全文

posted @ 2014-07-11 10:28 ggzone 阅读(124) 评论(0) 推荐(0)

摘要:这几天开始拜读侯捷先生和孟岩先生的译作《C++标准程序库:自修教程与参考手册》 。两位先生确实译功上乘,读得很顺。但是读到P55页关于auto_ptr_ref的讨论,却百思不得其解:为什么需要引入auto_ptr_ref这个辅助类呢?从书中描述来看,仿佛与拷贝构造函数 、右值 、类型转换 有关。于是... 阅读全文

posted @ 2014-07-10 20:30 ggzone 阅读(237) 评论(0) 推荐(0)