Leetcode 838 push dominos 解体思路
code { font-family: courier; color: green }
STL标准模板库
提供了一组表示容器、迭代器、函数对象和算法的模板。 Alex Stepanov & Meng Lee 一起开发了STL, 1994年第一版发布。STL不是面向对象的编程,而是一种不同的编程模式---泛型编程(generic programming)。 前者关注的是编程的数据方面,后者关注的是算法。共同特点是抽象与创建可重用代码,但理念决然不同。
容器
所有的STL容器都提供了一些基本方法,包括size(), swap, begin, end:后面两个返回指向容器的第一个与尾部的迭代器(一种广义指针)。 每一个容器类都定义了一个合适的迭代器,该迭代器的类型是一个名为iterator的typedef. 比如:
vector::iterator pd = scores.begin();
C++ 11的自动推断也可以用在这里:
auto pd = scores.begin();
几个有意思的操作
for_each() / random_shuffle() / sort() .
random_shuffle(books.begin(), books.end()) 随机排列区间中的元素。
泛型编程
泛型编程旨在编写独立与数据类型的代码, CPP中完成通用程序的工具是模板。模板使得算法独立于存储的数据类型,而迭代器使得算法独立于使用的容器类型。理解迭代器是理解STL的关键所在。
作为一种编程风格,最好避免直接使用迭代器,而尽可能使用STL函数(e.g., for_each)来处理细节。
原文地址:https://www.cnblogs.com/not-found-404/p/9341790.html