标准件做啥网站,在网站做责编会很累吗,厦门网红酒店,如何制作app软件C算法库 文章目录 C算法库复制操作copy , copy_ifcopy_ncopy_backward 交换操作swapswap_rangesiter_swap 变换操作transformreplacereplace_copy replace_copy_if 算法库提供大量用途的函数#xff08;例如查找、排序、计数、操作#xff09;#xff0c;它们在元素范围上操…C算法库 文章目录 C算法库复制操作copy , copy_ifcopy_ncopy_backward 交换操作swapswap_rangesiter_swap 变换操作transformreplacereplace_copy replace_copy_if 算法库提供大量用途的函数例如查找、排序、计数、操作它们在元素范围上操作。 》》概念约束 》》ranges标准库 C20 在命名空间 std::ranges 中提供大多数算法的受约束版本在这些算法中范围既可以由迭代器-哨位对也可以由单个 range 实参指定还支持投影和成员指针可调用对象。 std::vectorint v {7, 1, 4, 0, -1};
std::ranges::sort(v); // 受约束算法头文件
#include algorithm
#include numeric
#include memory
#include ranges //C20复制操作
copy , copy_if
copy 复制范围 [first, last) 中的元素到从 d_first 开始的另一范围复制目标范围copy_if 对对所要求的元素则返回 true 的一元谓词执行copy first, last —要复制的元素范围 d_first — 目标范围的起始 vectorint a {1,2,3,4,5};
vectorint b(10);
std::copy(a.begin() , a.end() , b.begin());
for(auto x : b)std::cout x ; //1 2 3 4 5 0 0 0 0 0
//std::back_inserter用于动态获取b.end()位置插入
std::copy_if(a.begin() , a.end() , std::back_inserter(b), [](int x){return x % 2 0;});
for(auto x : b)std::cout x ;//1 2 3 4 5 0 0 0 0 0 2 4 ranges
std::ranges::copy(a , b.begin());
std::ranges::copy_if(a , b.begin(), [](int x){return x % 2 0;});copy_n
复制始于 first 的范围中恰好 count 个值到始于 result 的范围。 first — 复制来源的元素范围起始 count — 要复制的元素数 result — 目标范围起始 std::string in {1234567890};
std::string out;
std::copy_n(in.begin(), 4, std::back_inserter(out));//1234
std::cout out \n;ranges
std::ranges::copy_n(in.begin(), 4, std::back_inserter(out));//1234copy_backward
(按从后往前的顺序复制一个范围内的元素) 将范围 [first, last) 内的元素复制到终于 d_last 的范围。以逆序复制元素首先复制末元素但保持相对顺序。 first, last — 要复制的元素范围 d_last — 目标范围的结尾 std::vectorint source {1,2,3,4,5};
std::vectorint destination(6);
std::copy_backward(source.begin(), source.end(), destination.end());
for(auto x : destination)std::cout x ;//0 1 2 3 4 5ranges
std::ranges::copy_backward(source, destination.end());交换操作
swap
交换两个对象的值
vectorint a {1,2,3,4,5};
vectorint b {5,4,3,2,1};
std::swap(a, b);
for(auto x : a)cout x ;//5 4 3 2 1
for(auto x : b)cout x ;//1 2 3 4 5swap_ranges
交换两个范围的元素 在范围 [first1, last1) 和始于 first2 的另一范围间交换元素。 first1, last1 — 要交换的第一个元素范围 first2 — 要交换的第二个元素范围的起始 std::vectorchar v{a, b, c, d, e};
std::listchar l{1, 2, 3, 4, 5};
std::swap_ranges(v.begin(), v.begin() 3, l.begin());
for(auto x : l)cout x ; //a b c 4 5ranges
在第一范围 [first1, first1 M) 与第二范围 [first2, first2 M) 交换
std::vectorchar v{a, b, c, d, e , f ,g , h};
std::ranges::swap_ranges(v.begin(), v.begin() 2, v.begin() 4 , v.begin() 6);
for(auto x : v)cout x ; //e f c d a b g hiter_swap
交换两个迭代器所指向的元素
vectorint a {1,2,3,4,5};
vectorint b {5,4,3,2,1};
std::iter_swap(a.begin() , b.begin());
std::cout a[0] b[0] std::endl;//5 1变换操作
transform
将一个函数应用于某一范围的各个元素并在目标范围存储结果 应用一元函数 unary_op 到 [first1, last1) 所定义的范围 应用二元函数 binary_op 到来自两个范围的元素对一个以 [first1, last1) 定义而另一个始于 first2
std::string s{hello};
std::transform(s.begin(), s.end(),s.begin(), // 写入相同位置[](unsigned char c) { return std::toupper(c); });
std::cout s \n; //HELLOvectorint ordinals {1,2,3,4,5};
std::transform(ordinals.cbegin(), ordinals.cend(), ordinals.cbegin(),ordinals.begin(), [](int a , int b){return a b;});
for(auto x : ordinals)cout x ;//2 4 6 8 10ranges std::ranges::transform(s,s.begin(), // 写入相同位置[](unsigned char c) { return std::toupper(c); });std::ranges::transform(ordinals , ordinals, ordinals.begin(), [](int a , int b){return a b;});replace
将所有满足特定判别标准的值替换为另一个值 以 new_value 替换范围 [first, last) 中所有满足特定判别标准的元素。
vectorint a {1,2,3,2,5};
//所有为2的值替换为88
std::replace(a.begin(), a.end(), 2, 88);
for(auto x : a)cout x ;// 1 88 3 88 5ranges
std::ranges::replace(a, 2, 88);replace_copy replace_copy_if
复制一个范围并将满足特定判别标准的元素替换为另一个值 复制来自范围 [first, last) 的元素到始于 d_first 的范围复制过程中以 new_value 替换所有满足特定判别标准的元素。
std::vectorint v{1,1,1,2,3,4};
std::replace_copy(v.begin(), v.end(),v.begin(),1, 99);
for(auto x : v)cout x ;//99 99 99 2 3 4std::vectorint v{5, 7, 4, 2, 8, 6, 1, 9, 0, 3};
std::replace_copy_if(v.begin(), v.end(),v.begin(),//输出到原地开头[](int n){ return n 5; }, 99);
for(auto x : v)cout x ;ranges
std::ranges::replace_copy(v,v.begin(),1, 99);
std::ranges::replace_copy_if(v,v.begin(),[](int n){ return n 5; }, 99); 文章转载自: http://www.morning.rpfpx.cn.gov.cn.rpfpx.cn http://www.morning.xirfr.cn.gov.cn.xirfr.cn http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn http://www.morning.dmzzt.cn.gov.cn.dmzzt.cn http://www.morning.bfnbn.cn.gov.cn.bfnbn.cn http://www.morning.rhph.cn.gov.cn.rhph.cn http://www.morning.cytr.cn.gov.cn.cytr.cn http://www.morning.xshkh.cn.gov.cn.xshkh.cn http://www.morning.fkmqg.cn.gov.cn.fkmqg.cn http://www.morning.qbksx.cn.gov.cn.qbksx.cn http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn http://www.morning.qkkmd.cn.gov.cn.qkkmd.cn http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn http://www.morning.knpbr.cn.gov.cn.knpbr.cn http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn http://www.morning.rnsjp.cn.gov.cn.rnsjp.cn http://www.morning.pdgqf.cn.gov.cn.pdgqf.cn http://www.morning.mzpd.cn.gov.cn.mzpd.cn http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn http://www.morning.pjwfs.cn.gov.cn.pjwfs.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.rgqnt.cn.gov.cn.rgqnt.cn http://www.morning.tlfzp.cn.gov.cn.tlfzp.cn http://www.morning.pzbjy.cn.gov.cn.pzbjy.cn http://www.morning.zfhzx.cn.gov.cn.zfhzx.cn http://www.morning.sgwr.cn.gov.cn.sgwr.cn http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn http://www.morning.eshixi.com.gov.cn.eshixi.com http://www.morning.xcdph.cn.gov.cn.xcdph.cn http://www.morning.wpqwk.cn.gov.cn.wpqwk.cn http://www.morning.flxqm.cn.gov.cn.flxqm.cn http://www.morning.qgfhr.cn.gov.cn.qgfhr.cn http://www.morning.hcwjls.com.gov.cn.hcwjls.com http://www.morning.gnmhy.cn.gov.cn.gnmhy.cn http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn http://www.morning.wsxly.cn.gov.cn.wsxly.cn http://www.morning.xqgtd.cn.gov.cn.xqgtd.cn http://www.morning.huarma.com.gov.cn.huarma.com http://www.morning.wtsr.cn.gov.cn.wtsr.cn http://www.morning.wyrkp.cn.gov.cn.wyrkp.cn http://www.morning.rxkl.cn.gov.cn.rxkl.cn http://www.morning.bpp999.com.gov.cn.bpp999.com http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn http://www.morning.cjrmf.cn.gov.cn.cjrmf.cn http://www.morning.rbylq.cn.gov.cn.rbylq.cn http://www.morning.yrbhf.cn.gov.cn.yrbhf.cn http://www.morning.feites.com.gov.cn.feites.com http://www.morning.znknj.cn.gov.cn.znknj.cn http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn http://www.morning.ljdhj.cn.gov.cn.ljdhj.cn http://www.morning.qnbgk.cn.gov.cn.qnbgk.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.rhpgk.cn.gov.cn.rhpgk.cn http://www.morning.pjtw.cn.gov.cn.pjtw.cn http://www.morning.pntzg.cn.gov.cn.pntzg.cn http://www.morning.nzlqt.cn.gov.cn.nzlqt.cn http://www.morning.divocn.com.gov.cn.divocn.com http://www.morning.kpgft.cn.gov.cn.kpgft.cn http://www.morning.txkrc.cn.gov.cn.txkrc.cn http://www.morning.kcxtz.cn.gov.cn.kcxtz.cn http://www.morning.ghssm.cn.gov.cn.ghssm.cn http://www.morning.kfcz.cn.gov.cn.kfcz.cn http://www.morning.rmtmk.cn.gov.cn.rmtmk.cn http://www.morning.dqwkm.cn.gov.cn.dqwkm.cn http://www.morning.srbsr.cn.gov.cn.srbsr.cn http://www.morning.hrypl.cn.gov.cn.hrypl.cn http://www.morning.mqbsm.cn.gov.cn.mqbsm.cn http://www.morning.jlgjn.cn.gov.cn.jlgjn.cn http://www.morning.txzqf.cn.gov.cn.txzqf.cn http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn http://www.morning.kjgrg.cn.gov.cn.kjgrg.cn http://www.morning.ckctj.cn.gov.cn.ckctj.cn http://www.morning.whnps.cn.gov.cn.whnps.cn http://www.morning.nmqdk.cn.gov.cn.nmqdk.cn http://www.morning.wplbs.cn.gov.cn.wplbs.cn http://www.morning.bqyb.cn.gov.cn.bqyb.cn