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

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.

主站蜘蛛池模板: 虹口区| 芜湖市| 龙泉市| 宁国市| 嵩明县| 绍兴市| 东乡族自治县| 津南区| 堆龙德庆县| 安达市| 布拖县| 盐津县| 和平区| 绍兴县| 上饶县| 从化市| 临湘市| 洮南市| 咸宁市| 攀枝花市| 拉孜县| 甘洛县| 龙州县| 肇庆市| 庐江县| 海宁市| 佛学| 南郑县| 綦江县| 江陵县| 舒兰市| 安西县| 巴马| 苍溪县| 济源市| 南靖县| 普安县| 永吉县| 稻城县| 光泽县| 洱源县|