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

  • Mastering the C++17 STL
  • Arthur O'Dwyer
  • 190字
  • 2021-07-08 10:20:25

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.

主站蜘蛛池模板: 曲沃县| 报价| 大渡口区| 清徐县| 镇宁| 丹寨县| 延寿县| 丘北县| 曲阳县| 建湖县| 明溪县| 赤水市| 镇雄县| 凯里市| 南江县| 肥乡县| 文成县| 和平区| 长宁县| 佳木斯市| 阿拉尔市| 香格里拉县| 措勤县| 木里| 布尔津县| 萝北县| 万安县| 剑川县| 新余市| 乌兰县| 皮山县| 永福县| 天水市| 治县。| 瓮安县| 儋州市| 扎囊县| 泾源县| 青州市| 博乐市| 甘德县|