官术网_书友最值得收藏!

Summary

The Standard Template Library has a generic algorithm for (almost) every desire. If you're doing something algorithmic, check the STL first!

STL algorithms deal in the half-open ranges defined by pairs of iterators. Be careful when dealing with any of the one-and-a-half-range algorithms.

STL algorithms that deal with comparison and sorting will use operator< by default, but you can always pass a two-argument "comparator" instead. If you want to perform a non-trivial operation on a whole range of data, remember that the STL might support it directly (std::move, std::transform) or indirectly via a special iterator type (std::back_inserter, std::istream_iterator).

You should know what a "permutation" is, and how the standard permutative algorithms (swap, reverse, rotate, partition, sort) are implemented in terms of one another. Just three STL algorithms (stable_sort, stable_partition, inplace_merge) may quietly allocate memory from the heap; if you can't afford heap allocation, avoid these three algorithms like the plague.

Use the erase-remove idiom to maintain the sort order of a sequence container even as you delete items from it. Use something like my::unstable_remove if you don't care about the sort order. Use .erase() for containers that support it.

主站蜘蛛池模板: 灵璧县| 石阡县| 汉源县| 正蓝旗| 红原县| 抚宁县| 稷山县| 泰和县| 水城县| 邮箱| 繁峙县| 泽州县| 南陵县| 霞浦县| 荥阳市| 江门市| 团风县| 龙口市| 邵阳县| 武陟县| 梨树县| 赤峰市| 巨野县| 台安县| 涿州市| 河西区| 象州县| 义马市| 北川| 翼城县| 青州市| 阿克陶县| 山西省| 黄陵县| 山东省| 台南县| 南平市| 崇文区| 永丰县| 北川| 翁牛特旗|