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

上海网站制作 公司自己做网站不推广

上海网站制作 公司,自己做网站不推广,公司电商网站建设费用怎么记账,淘宝网页设计网站C之STL的algorithm#xff08;8#xff09;之适配器#xff08;bind等#xff09;整理 注#xff1a;整理一些突然学到的C知识#xff0c;随时mark一下 例如#xff1a;忘记的关键字用法#xff0c;新关键字#xff0c;新数据结构 C 的适配器整理 C之STL的algorithm之STL的algorithm8之适配器bind等整理 注整理一些突然学到的C知识随时mark一下 例如忘记的关键字用法新关键字新数据结构 C 的适配器整理 C之STL的algorithm8之适配器bind等整理一、 集合相关操作算法1、函数对象适配器1.1 利用bind2nd进行绑定1.2 继承public binary_function参数1 类型,参数2类型,返回值类型 2. 取反适配器2.1 一元取反2.2 二元取反 3. 函数指针适配器3.1 ptr_fun将普通函数指针适配成函数对象 4. 成员函数适配器4.1 如果存放的是对象实体 mem_fun_ref4.2 如果存放的是对象指针 mem_fun 总结 提示本文为 C 适配器的写法和举例 一、 集合相关操作算法 C中的适配器是一种设计模式它允许将某个类的接口转换为客户端所期望的另一种接口从而使得原本不兼容的接口能够协同工作。在C标准库中适配器模式被广泛应用在函数对象和迭代器等组件上。 下面每一种适配器模式给出简要的描述和代码示例。 1、函数对象适配器 函数对象适配器用于将一个二元函数对象即带有两个参数的函数对象适配为只接受一个参数的函数对象。 1.1 利用bind2nd进行绑定 bind2nd用于将一个二元函数对象的第二个参数绑定为某个固定值生成一个新的一元函数对象。 cpp复制 #include functional #include iostream int main() { std::plusint plusObj; std::binder2ndstd::plusint binder(plusObj, std::placeholders::_2);binder(5); // 这其实是不合法的因为bind2nd返回的是一个一元函数对象需要提供一个参数 // 正确的使用方式是与其他函数适配器结合使用例如与std::bind auto bound_func std::bind(binder, std::placeholders::_1); std::cout bound_func(3) std::endl; // 输出8因为相当于plusObj(3, 5) return 0;}1.2 继承public binary_function参数1 类型,参数2类型,返回值类型 binary_function是一个模板基类提供了first_argument_type、second_argument_type和result_type三个嵌套类型用于描述二元函数对象的参数类型和返回值类型。 #include functional struct MyBinaryFunction : public std::binary_functionint, int, int { int operator()(int a, int b) const { return a b; }}; int main() { MyBinaryFunction myFunc;std::cout myFunc(3, 4) std::endl; // 输出7 return 0;}2. 取反适配器 取反适配器用于将一个函数对象的返回值取反。 2.1 一元取反 not1not1用于生成一个返回值为原函数对象返回值逻辑非的一元函数对象。 #include functional #include iostream bool is_positive(int x) { return x 0;} int main() { std::functionbool(int) func is_positive; std::not1std::functionbool(int) notFunc(func); std::cout notFunc(-3) std::endl; // 输出1true因为-3不是正数 return 0;}2.2 二元取反 not2not2用于生成一个返回值为原二元函数对象返回值逻辑非的一元函数对象。 #include functional#include iostreambool compare(int a, int b) { return a b;}int main() { std::functionbool(int, int) func compare; std::not2std::functionbool(int, int) notFunc(func); std::cout notFunc(5, 3) std::endl; // 输出1true因为5不小于3 return 0;}3. 函数指针适配器 函数指针适配器用于将普通函数指针适配为函数对象。 3.1 ptr_fun将普通函数指针适配成函数对象 #include functional #include iostream int add(int a, int b) { return a b;} int main() { std::pointer_to_binary_functionint, int, int funcPtrAdapter(add); std::cout funcPtrAdapter(3, 4) std::endl; // 输出7 return 0;} 4. 成员函数适配器 成员函数适配器用于将类的成员函数适配为函数对象。 4.1 如果存放的是对象实体 mem_fun_ref #include iostream #include functional #include vector #include algorithm struct MyClass { int value; MyClass(int v) : value(v) {} int get_value() const { return value; }};int main() { std::vectorMyClass vec{MyClass(3), MyClass(5), MyClass(1)}; std::sort(vec.begin(), vec.end(), std::mem_fun_ref(MyClass::get_value));for (const auto obj : vec) { std::cout obj.value ; } std::cout std::endl; // 输出 1 3 5 return 0;} 4.2 如果存放的是对象指针 mem_fun #include iostream #include functional #include vector #include algorithm struct MyClass { int value; MyClass(int v) : value(v) {} int get_value() const { return value; }};int main() { std::vectorMyClass* vec{new MyClass(3), new MyClass(5), new MyClass(1)}; std::sort(vec.begin(), vec.end(), std::mem_fun(MyClass::get_value)); for (MyClass* obj : vec) { std::cout obj-value ; } std::cout std::endl; // 输出 1 3 5 // 释放内存 for (MyClass* obj : vec) { delete obj; } return 0;}请注意由于std::mem_fun、std::mem_fun_ref、std::ptr_fun、std::bind2nd、std::binder2nd等函数适配器在C11之后逐渐被认为是不推荐的并在C17中被移除因此在实际编程中我们更推荐使用std::bind、std::function以及lambda表达式来创建函数对象和适配器。上面的代码示例主要是为了展示这些适配器的使用方式并不推荐在实际项目中使用。 总结
http://www.hkea.cn/news/14288371/

相关文章:

  • 邯郸做seo网站优化线上宣传渠道和宣传方式
  • 紧急网页升级紧急通知关键词seo资源
  • 南浔建设局网站怎么做网站扫描
  • 新手学做网站百度云wordpress三道杠菜单
  • 宜昌网站建设平台wordpress外贸建站 视频教程
  • 自助建站英文北京百度seo
  • 西部数码做网站网站建设的域名和空间价位
  • 信誉好的网站建设案例房屋租赁网站建设管理
  • 网站开发前端与后端区别企业网站管理源码
  • 宠物用品销售网站建设和技术现状wordpress前台登陆
  • 遂宁网站建设公司建设网站的标语
  • 外国人学做中国菜的网站环保网站建设模板免费下载
  • 淘宝建设网站的好处网站建设专题
  • 哈尔滨创意网站建设做餐饮加盟的网站建设
  • 仙桃网站定制网站建设项目验收方案
  • 济南市住建厅官方网站wordpress 上传阿里云
  • 舞蹈网站建设报价海丰县建设局官方网站
  • 建站需求收费wordpress主题
  • 网站前端开发培训资料展馆展示设计公司招聘信息
  • 手机网站 建设ai人工智能写代码
  • 漯河市万金镇网站建设网站一年费用
  • 安徽网站建设合肥网站建设保定网站建设服务
  • 网站建设套餐有哪些360推广和百度推广哪个好
  • 一千元做网站手机网站制作吧
  • 成都网站开发建wordpress 分享按钮插件
  • 郑州网站seo排名请人做网站多少钱
  • 网页制作与网站建设技术大全 下载福州如何做百度的网站
  • 合肥网站建设公司还有不滁州网站建设
  • 电商网站设计企业网站建立价格
  • 制作企业网站方案wordpress案例站点