Posts

【C++ STL应用与实现】目录

18 Dec 2015

#前言 这篇文章是《STL应用与实现》系列的目录, 也是这系列文章的写作计划。STL的总结主要分成四大块:容器、迭代器、函数对象和算法。 每个大块细分成的每个叶子节点就对应着一篇文章,文章标题在目录里以超链接的形式展现,作为一个索引。 已经完成的文章,我会在后面加上【完成】标识。跳转不过去的就是未完成的文章,作为写作计划。 下面的“目录”很多是用表格的形式,这样也便于一目了然看到某个大块下有哪些子节点,比如算法这一块,就用表格比较直观,采用《C++标准程序库》的分类方式,每个算法类别是一个表。 目录里的文章不定期更新,用到了哪个特性或是有空的时候就写一点。

缘起、概览

类型 文章链接
beginning 【C++ STL应用与实现】0: 感恩STL——STL, ACM和年轻的我们【完成】
概览 【C++ STL应用与实现】1: STL概览和分类【完成】
...

阅读全文 ...


【C++ STL应用与实现】86: 如何使用std::accumulate

18 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 #前言 本文总结了STL算法中,数值类算法(numeric algorithm)里的第一个算法: std::accumulate的使用, 及注意事项. #基本用法 先看一个使用accumulate的简单例子:

vector<int> vi{1, 2, 3};

cout << accumulate(vi.begin(), vi.end(), 0);    // 6
这个例子中,accumulate接收了三个参数,一对迭代器用来标识开始和结束区间,第三个参数0,是accumulate操作的初始值. accumulate遍历[begin, end)这个区间,把每个值累加到0这个初始值上面,并最终返回累加结束的值(0 + 1 + 2 + 3) == 6. ...

阅读全文 ...


【C++ STL应用与实现】0: 感恩STL——STL, ACM和年轻的我们

17 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 #前言 本文是一篇洗脑文,鼓吹STL的好处, 回忆作者第一次认识STL,并给出STL的学习路线。 ...

阅读全文 ...


【C++ STL应用与实现】22: 函数组合之1:如何使用std::bind (since C++11)

15 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 ##前言 std::bind是STL实现函数组合概念的重要手段,本文总结了std::bind这个模板函数的用法,给出了std::bind绑定普通函数(函数指针)、lambda表达式、成员函数、成员变量、模板函数、嵌套std::bind等的语法细节及注意的问题。 文中涉及到的术语:

  • std::placeholders : 占位符,被占位符绑定的参数,在实际调用中被实际参数代替。
  • std::decay : 退化类型
  • std::forward : 转发
  • Callable : 可调用对象
  • lambda : functors的语法糖,定义一个函数(对象), 当做函数来使用
  • trailing return types : 用于在声明(定义)函数时,函数返回值依赖于其参数的类型;或者是函数返回类型描述比较复杂时,用来简化类型书写
  • [reference_wrapper](http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper) : 引用包装类模板,用于把一个应用封装成一个对象,以便于在容器里,或者传递引用。
...

阅读全文 ...


【C++ STL应用与实现】22: 函数组合之1:如何使用std::bind (since C++11)

15 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 ##前言 std::bind是STL实现函数组合概念的重要手段,本文总结了std::bind这个模板函数的用法,给出了std::bind绑定普通函数(函数指针)、lambda表达式、成员函数、成员变量、模板函数、嵌套std::bind等的语法细节及注意的问题。 文中涉及到的术语:

  • std::placeholders : 占位符,被占位符绑定的参数,在实际调用中被实际参数代替。
  • std::decay : 退化类型
  • std::forward : 转发
  • Callable : 可调用对象
  • lambda : functors的语法糖,定义一个函数(对象), 当做函数来使用
  • trailing return types : 用于在声明(定义)函数时,函数返回值依赖于其参数的类型;或者是函数返回类型描述比较复杂时,用来简化类型书写
  • [reference_wrapper](http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper) : 引用包装类模板,用于把一个应用封装成一个对象,以便于在容器里,或者传递引用。
...

阅读全文 ...