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

jsp网站建设 书籍缔客网络上海响应式网站建设

jsp网站建设 书籍,缔客网络上海响应式网站建设,深圳注册公司育君财税,临沂 网站建设stl中的比较最大最小操作 一、概述二、最小值1. min2. min_element 三、最大值1. max2. max_element 四、混合1. minmax2. minmax_element 一、概述 记录这里C11中常用的最小值和最大值的比较函数#xff0c;最好的参考资料其实就是 https://zh.cppreference.com 最重要的查… stl中的比较最大最小操作 一、概述二、最小值1. min2. min_element 三、最大值1. max2. max_element 四、混合1. minmax2. minmax_element 一、概述 记录这里C11中常用的最小值和最大值的比较函数最好的参考资料其实就是 https://zh.cppreference.com 最重要的查看文档其实就看他的如何实现这个就是使用的最常用的功能。因为STL用的很多基本上全是函数模板库都是支持自定义函数函数器作为一个对比选项。 不带 _element 的函数一般用在两个值之间比较如果很多值还是用带_element 这个是去遍历容器比较 就像min、max最后比较两个值而且返回的是值min_element、max_element比较容器返回的是迭代器 二、最小值 1. min 1. 可能的实现 // 版本 1 templateclass T const T min(const T a, const T b) {return (b a) ? b : a; }// 版本 2 templateclass T, class Compare const T min(const T a, const T b, Compare comp) {return (comp(b, a)) ? b : a; }// 版本 3 templateclass T T min(std::initializer_listT ilist) {return *std::min_element(ilist.begin(), ilist.end()); }// 版本 4 templateclass T, class Compare T min(std::initializer_listT ilist, Compare comp) {return *std::min_element(ilist.begin(), ilist.end(), comp); }从上面的实现其实就能看出来这个是支持用函数器做自己的特定对比也是可以通过重载 符号去实现对比功能. 而且输入值和输出的模板类型是一样的 还有一些用的是 min_element 函数为实现对了min_element的一个适配器。 例子 下面给一个对比最小值的例子 #include algorithm #include iostream #include string_viewint main() {int res_1 std::min(1, 9999); // res_1 1char res_2 std::min(a, b); // res_2 astring res_3 std::min({foo, bar, hello}, [](const std::string s1, const std::string s2){return s1.size() s2.size();}) ; // res_3 foo }2. min_element 看看这个的相关实现 // 版本一 templateclass ForwardIt ForwardIt min_element(ForwardIt first, ForwardIt last) {if (first last)return last;ForwardIt smallest first;first;for (; first ! last; first)if (*first *smallest)smallest first;return smallest; }// 版本二 templateclass ForwardIt, class Compare ForwardIt min_element(ForwardIt first, ForwardIt last, Compare comp) {if (first last)return last;ForwardIt smallest first;first;for (; first ! last; first)if (comp(*first, *smallest))smallest first;return smallest; }从函数的实现来看外部的函数器的差距就在 一个是用得 ‘’ 另外一个用的 comp(*first, *smallest)对比因为‘’取决于语言定义或者我们程序员的重载实现的。 后面的其他函数maxminmax都是用的这样的。 这个参数的传入的其实就是迭代器返回的也是迭代器也需要去解引取值之类的。 就像下面这种代码 std::vectorPointF points{PointF{-1.43, 5.654}, PointF{2.453, 8.654} , PointF{10.453, -2.654}, PointF{14.453, -8.87}};auto x_minmax std::minmax_element(points.begin(), points.end(), [](const PointF p1, const PointF p2){return p1.x() p2.x(); }) ;三、最大值 1. max max和min是一样的定义方式其实就是把那个大于小于改了一下 2. max_element 这个的实现也比较简单 // 版本一 templateclass ForwardIt ForwardIt max_element(ForwardIt first, ForwardIt last) {if (first last)return last;ForwardIt largest first;first;for (; first ! last; first)if (*largest *first)largest first;return largest; }// 版本二 templateclass ForwardIt, class Compare ForwardIt max_element(ForwardIt first, ForwardIt last, Compare comp) {if (first last)return last;ForwardIt largest first;first;for (; first ! last; first)if (comp(*largest, *first))largest first;return largest; }四、混合 1. minmax 实现的源码大差不差的如下是不是比较巧妙和灵活注意这个是返回的是值而不是迭代器 //版本一 templateclass T constexpr std::pairconst T, const T minmax( const T a, const T b ) {return (b a) ? std::pairconst T, const T(b, a): std::pairconst T, const T(a, b); }//版本二 templateclass T, class Compare constexpr std::pairconst T, const T minmax( const T a, const T b, Compare comp ) {return comp(b, a) ? std::pairconst T, const T(b, a): std::pairconst T, const T(a, b); }//版本三 template class T constexpr std::pairT, T minmax( std::initializer_listT ilist ) {auto p std::minmax_element(ilist.begin(), ilist.end());return std::pair(*p.first, *p.second); }// 版本四 template class T, class Compare constexpr std::pairT, T minmax( std::initializer_listT ilist, Compare comp ) {auto p std::minmax_element(ilist.begin(), ilist.end(), comp);return std::pair(*p.first, *p.second); }上面的first是小值second是大值所以看一下源码就记住了 看看例子 std::pairint, int bounds std::minmax(3, -1);2. minmax_element 和之前的min_element类似返回的是一个std::pair迭代器迭代器类型要取值要自己去解引数据 //版本一 templateclass ForwardIt std::pairForwardIt, ForwardIt minmax_element(ForwardIt first, ForwardIt last) {using value_type typename std::iterator_traitsForwardIt::value_type;return std::minmax_element(first, last, std::lessvalue_type()); }//版本二 templateclass ForwardIt, class Compare std::pairForwardIt, ForwardIt minmax_element(ForwardIt first, ForwardIt last, Compare comp) {auto min first, max first;if (first last || first last)return {min, max};if (comp(*first, *min)) {min first;} else {max first;}while (first ! last) {auto i first;if (first last) {if (comp(*i, *min)) min i;else if (!(comp(*i, *max))) max i;break;} else {if (comp(*first, *i)) {if (comp(*first, *min)) min first;if (!(comp(*i, *max))) max i;} else {if (comp(*i, *min)) min i;if (!(comp(*first, *max))) max first;}}}return {min, max}; }例子如下 std::vectorint v {3, 1, 4, 1, 5, 9, 2, 6}; auto bounds std::minmax_element(v.begin(), v.end());int min *bounds.first; // 1 int max *bounds.second; // 9
http://www.dnsts.com.cn/news/119505.html

相关文章:

  • 网站建设文翻译工作室东莞的网站建设公司哪家好
  • 石家庄建设网站哪家好广平手机网站建设
  • 网站建设公司济宁装饰设计培训
  • 洛阳建设信息网站建手机网站一年费用
  • 肃宁网站建设价格页游大全
  • 广州网站优化效果短网址统计
  • wordpress多语言网站四川网站建设设计公司
  • 织梦网站地图制作教程海南省海口市龙华区
  • 大型门户网站建设哪专业python做网站安全性
  • 网站建设销售好做嘛要怎样注册公司
  • 做网站代理怎么赚钱棋牌源码
  • 兰州网站设计哪个平台好赣州小程序开发公司
  • 满洲里建设局网站首页免费建微网站平台
  • 合肥网站设计goz中国建设造价工程协会网站
  • 邢台提供网站设计公司哪家专业广州市新闻发布会
  • 做机械外贸什么网站好如何建设和优化一个网站
  • wordpress电商网站html5的优点
  • 一页网站广州珠江工程建设监理有限公司网站
  • 关于电视剧的网站设计网页怎么样做跨境电商
  • 企业网站备案青岛网站制作工具
  • 建设厅执业注册中心网站网站建设营销模板
  • 中山做百度网站的公司名称企业网站视频栏目建设方案
  • 大同网站建设设计如何优化网站代码
  • 快速搭建网站系统一家专门做房产特卖的网站
  • 新手从零基础建站初级网站建设网站模板 可做采集站
  • 网站建设中中文模板谷歌网站流量统计
  • 厦门建设银行招聘网站汉中市建设局网站
  • 做网站导航站的注意点传媒有限公司
  • 网站没备案做淘宝客网站做分享链接
  • 唐山专业网站建设公司网站建设课程设计百度文库