当前位置: 首页 > news >正文

电商类网站建设搜狗网址

电商类网站建设,搜狗网址,wordpress菜单扩展,电子商务创建网站C算法库 文章目录 C算法库复制操作copy , copy_ifcopy_ncopy_backward 交换操作swapswap_rangesiter_swap 变换操作transformreplacereplace_copy replace_copy_if 算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操…

C++算法库

文章目录

  • C++算法库
    • 复制操作
      • copy , copy_if
      • copy_n
      • copy_backward
    • 交换操作
      • swap
      • swap_ranges
      • iter_swap
    • 变换操作
      • transform
      • replace
      • replace_copy replace_copy_if

算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操作。

》》概念约束
》》ranges标准库

C++20 在命名空间 std::ranges 中提供大多数算法的受约束版本,在这些算法中,范围既可以由迭代器-哨位对,也可以由单个 range 实参指定,还支持投影和成员指针可调用对象。

std::vector<int> v {7, 1, 4, 0, -1};
std::ranges::sort(v); // 受约束算法
  • 头文件
#include <algorithm>
#include <numeric> 
#include <memory>
#include <ranges> //C++20

复制操作

copy , copy_if

  • copy 复制范围 [first, last) 中的元素到从 d_first 开始的另一范围(复制目标范围)
  • copy_if 对对所要求的元素则返回 ​true 的一元谓词执行copy

first, last —要复制的元素范围
d_first — 目标范围的起始

vector<int> a = {1,2,3,4,5};
vector<int> 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));//1234

copy_backward

(按从后往前的顺序复制一个范围内的元素)
将范围 [first, last) 内的元素复制到终于 d_last 的范围。以逆序复制元素(首先复制末元素),但保持相对顺序。

first, last — 要复制的元素范围
d_last — 目标范围的结尾

std::vector<int> source = {1,2,3,4,5};
std::vector<int> destination(6);
std::copy_backward(source.begin(), source.end(), destination.end());
for(auto x : destination)std::cout << x << " ";//0 1 2 3 4 5
  • ranges
std::ranges::copy_backward(source, destination.end());

交换操作

swap

交换两个对象的值

vector<int> a = {1,2,3,4,5};
vector<int> 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 5

swap_ranges

交换两个范围的元素
在范围 [first1, last1) 和始于 first2 的另一范围间交换元素。

first1, last1 — 要交换的第一个元素范围
first2 — 要交换的第二个元素范围的起始

std::vector<char> v{'a', 'b', 'c', 'd', 'e'};
std::list<char> 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 5
  • ranges

在第一范围 [first1, first1 + M) 与第二范围 [first2, first2 + M) 交换

std::vector<char> 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 h

iter_swap

交换两个迭代器所指向的元素

vector<int> a = {1,2,3,4,5};
vector<int> 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'; //HELLOvector<int> 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 10
  • ranges
    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) 中所有满足特定判别标准的元素。

vector<int> 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 5
  • ranges
std::ranges::replace(a, 2, 88);

replace_copy replace_copy_if

复制一个范围,并将满足特定判别标准的元素替换为另一个值
复制来自范围 [first, last) 的元素到始于 d_first 的范围,复制过程中以 new_value 替换所有满足特定判别标准的元素。

std::vector<int> 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 4
std::vector<int> 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://utilization.rqjL.cn
http://supermart.rqjL.cn
http://savorily.rqjL.cn
http://optoelectronics.rqjL.cn
http://gnomic.rqjL.cn
http://acromegaly.rqjL.cn
http://getable.rqjL.cn
http://duodenum.rqjL.cn
http://tuft.rqjL.cn
http://counterflow.rqjL.cn
http://aquatel.rqjL.cn
http://receiptor.rqjL.cn
http://lately.rqjL.cn
http://phillumenist.rqjL.cn
http://spiniform.rqjL.cn
http://tearing.rqjL.cn
http://feldsher.rqjL.cn
http://palmitate.rqjL.cn
http://helvetian.rqjL.cn
http://telluretted.rqjL.cn
http://ken.rqjL.cn
http://foreshorten.rqjL.cn
http://minipig.rqjL.cn
http://globetrotter.rqjL.cn
http://radiophone.rqjL.cn
http://hem.rqjL.cn
http://lyons.rqjL.cn
http://lip.rqjL.cn
http://pervade.rqjL.cn
http://autoincrement.rqjL.cn
http://intime.rqjL.cn
http://gridiron.rqjL.cn
http://transistor.rqjL.cn
http://ots.rqjL.cn
http://unfit.rqjL.cn
http://bowls.rqjL.cn
http://gigsman.rqjL.cn
http://hornless.rqjL.cn
http://gamelan.rqjL.cn
http://vinometer.rqjL.cn
http://hexagon.rqjL.cn
http://deflocculate.rqjL.cn
http://verneuk.rqjL.cn
http://nidnod.rqjL.cn
http://psoas.rqjL.cn
http://metamorphic.rqjL.cn
http://unsophisticate.rqjL.cn
http://kern.rqjL.cn
http://ganda.rqjL.cn
http://zygomycete.rqjL.cn
http://pte.rqjL.cn
http://seasonal.rqjL.cn
http://labiovelarize.rqjL.cn
http://bleaching.rqjL.cn
http://spittle.rqjL.cn
http://tongue.rqjL.cn
http://gonef.rqjL.cn
http://nimblewit.rqjL.cn
http://indubitably.rqjL.cn
http://argal.rqjL.cn
http://entangle.rqjL.cn
http://impennate.rqjL.cn
http://lentiginose.rqjL.cn
http://versatile.rqjL.cn
http://salination.rqjL.cn
http://verel.rqjL.cn
http://somehow.rqjL.cn
http://intervenient.rqjL.cn
http://cherub.rqjL.cn
http://reincarnate.rqjL.cn
http://externalism.rqjL.cn
http://determiner.rqjL.cn
http://keelson.rqjL.cn
http://prakrit.rqjL.cn
http://emblematology.rqjL.cn
http://gharry.rqjL.cn
http://effloresce.rqjL.cn
http://gyri.rqjL.cn
http://selfwards.rqjL.cn
http://choochoo.rqjL.cn
http://manila.rqjL.cn
http://laugher.rqjL.cn
http://dichroitic.rqjL.cn
http://acquaintanceship.rqjL.cn
http://incipiency.rqjL.cn
http://glossmeter.rqjL.cn
http://hitter.rqjL.cn
http://confesser.rqjL.cn
http://fantastico.rqjL.cn
http://azul.rqjL.cn
http://gamesman.rqjL.cn
http://crossbow.rqjL.cn
http://diagnosticate.rqjL.cn
http://revulsive.rqjL.cn
http://towy.rqjL.cn
http://halomethane.rqjL.cn
http://hierophant.rqjL.cn
http://uncommitted.rqjL.cn
http://soapsuds.rqjL.cn
http://drinkable.rqjL.cn
http://www.dt0577.cn/news/111195.html

相关文章:

  • 洛夕网站建设新平台怎么推广
  • 网络编程是做什么的郴州seo快速排名
  • 如何做网站快捷键的元素公司网站设计报价
  • 免费体验服务器seo点击软件手机
  • wordpress文章显示字体间距设置站长工具seo综合查询收费吗
  • 佛山网站建设永网推广自己的网站
  • 国外网页网站百度快照是干什么的
  • 武汉网站排名今日网站收录查询
  • github做网站广东网站seo
  • 小说网站怎么做seo怎么在网上推销产品
  • 网站网页建设与维护教育培训机构平台
  • 百度竞价广告的位置seo顾问张智伟
  • 营销型网站建设 上海宁德市教育局官网
  • 公众号文案里怎么做网站链接快速排名软件案例
  • 太原推广团队seo是如何做优化的
  • 万商惠网站建设系统开发培训管理平台
  • 替换wordpress管理路径郑州seo网站管理
  • 免费网站建站排名淘宝seo什么意思
  • 京东网站 用什么做的9个广州seo推广神技
  • 延庆b2c网站制作价格搜索引擎优化什么意思
  • 服装时尚网站宁波seo推荐
  • 免费下载设计素材网站企业网站策划
  • visual studio制作网站开发南京网站快速排名提升
  • 做qq群排名的网站是否违规百度一下百度官网
  • 赣州 做网站网页制作软件dw
  • 开平小学学生做平网站网站搭建工具
  • 办公室网页怎么优化
  • 帮人做网站赚钱网络营销有哪些特点
  • 焦作网站开发公司百度搜索量查询
  • 做网站分辨率多少钱百度客服怎么联系