- 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.
- 解構(gòu)產(chǎn)品經(jīng)理:互聯(lián)網(wǎng)產(chǎn)品策劃入門寶典
- Vue.js 3.x從入門到精通(視頻教學(xué)版)
- Python Deep Learning
- Learning Informatica PowerCenter 10.x(Second Edition)
- 編寫高質(zhì)量代碼:改善C程序代碼的125個(gè)建議
- Python王者歸來
- Java虛擬機(jī)字節(jié)碼:從入門到實(shí)戰(zhàn)
- Building a Recommendation Engine with Scala
- Building Android UIs with Custom Views
- 現(xiàn)代C++編程實(shí)戰(zhàn):132個(gè)核心技巧示例(原書第2版)
- Frank Kane's Taming Big Data with Apache Spark and Python
- 深入理解C指針
- Java Web應(yīng)用開發(fā)項(xiàng)目教程
- Learning Ionic
- Python Digital Forensics Cookbook