C++ STL高级算法实战:transform/accumulate/for_each面试必考

发布时间:2026/10/7 14:11:28
C++ STL高级算法实战:transform/accumulate/for_each面试必考 C++ STL高级算法实战:transform/accumulate/for_each面试必考本文深入讲解C++ STL中常用的高级算法,包括transform、accumulate、for_each、remove_if等,配合大量实战代码和面试真题,助你掌握函数式编程风格。一、STL算法概览1.1 算法分类类别常用算法头文件非修改序列for_each, count, find, search修改序列transform, copy, fill, swap排序sort, stable_sort, partial_sort二分查找lower_bound, upper_bound, binary_search集合merge, set_union, set_intersection数值accumulate, inner_product, partial_sum1.2 函数对象与Lambda#includealgorithm#includevector#includeiostreamintmain(){std::vectorintv={1,2,3,4,5};// Lambda表达式autosquare=[](intx){returnx*x;};// 函数对象structDoubler{intoperator()(intx)const{returnx*2;}};// 两者都可以传给算法std::transform(v.begin(),v.end(),v.begin(),square);for(intx:v)std::coutx" ";// 1 4 9 16 25std::coutstd::endl;std::transform(v.begin(),v.end(),v.begin(),Doubler{});for(intx:v)std::coutx" ";// 2 8 18 32 50return0;}二、transform:序列变换2.1 一元transform#includealgorithm#includevector#includestring#includeiostreamintmain(){std::vectorintnums={1,2,3,4,5};std::vectorstd::stringstrs;// 将数字转为字符串std::transform(nums.begin(),nums.end(),std::back_inserter(strs),[](intn){returnstd::to_string(n);});