右值引用, 完美转发, 万能引用, lambda表达式, 包装器 用法

右值引用,完美转发,万能引用 用法

//链表节点
template <typename T>
struct __list_node
{//1. __list_node(const T& val = T()):_prev(nullptr), _next(nullptr), _val(val){}__list_node(T&& val):_prev(nullptr), _next(nullptr), _val(forward<T>(val)){}//2. /*template<typename Ty>__list_node(Ty&& val):_prev(nullptr), _next(nullptr), _val(forward<Ty>(val)){}*//*成员变量*/__list_node<T>* _prev;__list_node<T>* _next;T _val;
};//添加相关
void push_back(const T& x)
{Node* newnode = new Node(x);Node* tail = _head->_prev;tail->_next = newnode;newnode->_prev = tail;newnode->_next = _head;_head->_prev = newnode;_size++;
}
//右值引用+完美转发
void push_back(T&& x)
{Node* newnode = new Node(forward<T>(x));Node* tail = _head->_prev;tail->_next = newnode;newnode->_prev = tail;newnode->_next = _head;_head->_prev = newnode;_size++;
}

lambda表达式 用法

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;class Goods
{
public:Goods(string name, double price, int servicelife, int qualityindex):_name(name),_price(price),_servicelife(servicelife),_qualityindex(qualityindex){}void Show(){cout << "物品名称:" << _name << " ";cout << "价格:" << _price << " ";cout << "使用期限:" << _servicelife << " ";cout << "质量指数:" << _qualityindex << " " << endl;}string _name;double _price;int _servicelife;int _qualityindex;
};void Print(Goods* ptr)
{for (int i = 0; i < 5; i++){(*(ptr + i)).Show();}cout << endl;
}int main()
{Goods Array[5] = { Goods("Book", 59.9, 100, 10),Goods("Computer", 5535.3, 10, 9),Goods("Pen", 2.5, 2, 5),Goods("Phone", 4500.5, 20, 8),Goods("Shoe", 200.5, 1, 7) };sort(Array, Array + 5, [](const Goods& thing1, const Goods& thing2) -> bool {return thing1._name < thing2._name; });Print(Array);sort(Array, Array + 5, [](const Goods& thing1, const Goods& thing2) {return thing1._price < thing2._price; });Print(Array);sort(Array, Array + 5, [](const Goods& thing1, const Goods& thing2) {return thing1._servicelife < thing2._servicelife; });Print(Array);sort(Array, Array + 5, [](const Goods& thing1, const Goods& thing2) {return thing1._qualityindex < thing2._qualityindex; });Print(Array);return 0;
}

包装器(类模板function) 用法

#include <iostream>
#include <functional>
#include <vector>
using namespace std;//五花八门的仿函数(可调用对象之一)
class FUNC1
{
public:int operator()(int x){cout << "这是一个仿函数对象: 你传入的是" << x;if (x % 2 == 0){cout << " , 这是一个偶数, 它的下一个奇数是";}else{cout << " , 这是一个奇数, 它的下一个偶数是";}return x + 1;}
};
class FUNC2
{
public:int operator()(int x){cout << "这是一个仿函数对象: 你传入的是" << x;cout << ", 我将其除上10,为:";return x / 10;}
};//五花八门的普通函数(可调用对象之一)
int OrdinaryFunc1(int x)
{cout << "普通函数:";cout << "你传入的是" << x << ", 我将其除2,为:";return x / 2;
}
int OrdinaryFunc2(int x)
{cout << "普通函数:";cout << "你传入的是" << x << ", 我将其除5,为:";return x / 5;
}int main()
{//五花八门的lambda表达式(可调用对象之一)const char* ptr = "lambda表达式";int i = 1;auto func1 = [&, ptr](int x) {cout << ptr << (i++) << ": ";cout << "你传入的是" << x << ", 我将其加上10,为:";return x + 10;};auto func2 = [&](int x) {cout << ptr << (i++) << ": ";cout << "你传入的是" << x << ", 我将其乘上10,为:";return x * 10;};auto func3 = [&](int x) {cout << ptr << (i++) << ": ";cout << "你传入的是" << x << ", 我将其减去10,为:";return x - 10;};//统一的方式vector<function<int(int)>> MyFuncs({ func1, func2, func3, FUNC1(), FUNC2() ,func1, func2, FUNC2(), OrdinaryFunc1,OrdinaryFunc2 });int number = 2;for (auto& everyfunc : MyFuncs){cout << everyfunc(number) << endl;number *=10;}return 0;
}

包装器(函数模板bind) 用法

#include <iostream>
#include <functional>
#include <vector>
using namespace std;//可调用对象:全局普通函数
void InfoInput(int age, const string& sex, const string& name)
{cout << "姓名:" << name << endl;cout << "性别:" << sex << endl;cout << "年龄:" << age << endl << endl;
}//可调用对象:类的普通函数
class Person
{
public:void ClassInfoInput(const string& sex, int age, const string& name){_name = name;_sex = sex;_age = age;}void ShowInfo(){cout << "姓名:" << _name << endl;cout << "性别:" << _sex << endl;cout << "年龄:" << _age << endl << endl;}
private:string _name;string _sex;int _age;
};int main()
{auto BoyNewInfoInput = bind(InfoInput, placeholders::_2, "男", placeholders::_1);auto GirlNewInfoInput = bind(InfoInput, placeholders::_2, "女", placeholders::_1);BoyNewInfoInput("沈", 20);BoyNewInfoInput("徐", 35);GirlNewInfoInput("叶", 19);GirlNewInfoInput("黄", 25);Person p1, p2;auto BoyClassNewInfoInput = bind(&Person::ClassInfoInput, &p1, "男", placeholders::_2, placeholders::_1);auto GirlClassNewInfoInput = bind(&Person::ClassInfoInput, &p2, "女", placeholders::_2, placeholders::_1);BoyClassNewInfoInput("Mike", 22);GirlClassNewInfoInput("Army", 18);p1.ShowInfo();p2.ShowInfo();auto obj = [](int x, int y) {return x < y; };auto newobj = bind(obj, placeholders::_2, placeholders::_1);cout << obj(1, 2) << endl;cout << newobj(1, 2) << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/102101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

canvas基础2 -- 形状

七巧板 七巧板本质上就是 分别由几个直线 拼成一个个图形&#xff0c;再将这些图形结合起来 var tangram [{ p: [{ x: 0, y: 0 }, { x: 800, y: 0 }, { x: 400, y: 400 }], color: "#caff67" },{ p: [{ x: 0, y: 0 }, { x: 400, y: 400 }, { x: 0, y: 800 }], col…

Maven下载与文件配置

文章目录 官网下载相应文件修改配置文件设置环境变量 官网下载相应文件 https://maven.apache.org/ 点击Download ,找到Files 下载好了&#xff0c;请解压&#xff0c;放在你需要存储的位置&#xff01; 修改配置文件 打开解压的文件&#xff1a; 在conf 下有一个setting…

vscode远程ssh服务器且更改服务器别名

目录 1、打开VS Code并确保已安装"Remote - SSH"扩展。如果尚未安装&#xff0c;请在扩展市场中搜索并安装它。 2、单击左下角的"Remote Explorer"图标&#xff0c;打开远程资源管理器。 3、在远程资源管理器中&#xff0c;单击右上角的齿轮图标&#x…

IT行业有前景么? 优漫动游

IT行业非常有前景&#xff0c;我甚至一度觉得&#xff0c;如果你很迷茫&#xff0c;那么IT行业可能是绝大部分理工科的最佳选择。我知道有人不同意&#xff0c;先别急着反驳&#xff0c;听我说完先。 IT行业有前景么&#xff1f; 说到IT&#xff0c;人们对IT的第一印象是&…

这些负载均衡都解决哪些问题?服务、网关、NGINX?

在微服务项目中&#xff0c;有服务的负载均衡、网关的负载均衡、Nginx的负载均衡&#xff0c;这几个负载均衡分别用来解决什么问题呢&#xff1f; 一、服务的负载均衡 先抛出一个问题&#xff1a; 当一个微服务被多个实例部署时&#xff0c;如何分配和平衡请求的负载&#x…

淘宝API 接口知识小结

应用程序接口 API&#xff08;Application Programming Interface&#xff09;&#xff0c;是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统&#xff08;中后台系统&#xff09;或后台不同系统之间的交互点。包括外部接口、内部接口&#x…

基于VCO的OTA稳定性分析的零交叉时差模型研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

因子分析(SPSS和Python)

一、源数据 二、SPSS因子分析 2.1.导入数据 2.2.标准化处理 由于指标的量纲不同&#xff08;单位不一致&#xff09;&#xff0c;因此&#xff0c;需要对数据进行标准化处理 2.3.因子分析 点击“确定”后&#xff0c;再回到“总方差解释”表格&#xff0c;以“旋转载荷平方和…

点向行列连边的网络流图优化成行列连边的二分图:CF1592F2

https://www.luogu.com.cn/problem/CF1592F2 做完F1&#xff0c;然后用1的结论来思考。 场上推了几个性质。首先op4的操作行列必然两两不同&#xff0c;所以op4最多 max ⁡ ( n , m ) \max(n,m) max(n,m) 次。然后手玩发现只有除 ( n , m ) (n,m) (n,m) 的三个格子都为1&am…

发稿渠道和发布新闻的步骤和技巧,收藏!

在现代社会中&#xff0c;新闻的发布和传播起着至关重要的作用。通过新闻&#xff0c;人们可以获取及时的信息&#xff0c;了解社会动态和事件发展。而对于企业和组织来说&#xff0c;通过新闻发布可以宣传品牌、推广产品&#xff0c;增加曝光度&#xff0c;吸引目标受众的关注…

安卓-APP启动优化技术方案汇总

应用有三种启动状态&#xff1a;冷启动、温启动或热启动。每种状态都会影响应用向用户显示所需的时间。在冷启动中&#xff0c;应用从头开始启动。在另外两种状态中&#xff0c;系统需要将后台运行的应用带入前台。 我们建议您始终在假定冷启动的基础上进行优化。这样做也可以…

分享一下微信付费文章功能怎么做

微信付费文章功能是一种基于微信公众号的文章付费阅读模式&#xff0c;它可以帮助公众号运营者实现文章内容的变现&#xff0c;提高文章的阅读量和收益。本文将介绍微信付费文章功能的制作流程、功能特点、使用流程和推广策略&#xff0c;帮助读者了解如何制作一个高效的微信付…

java压缩图片几种方式及安装

Springboot集成GraphicsMagick - 掘金 Linux下安装GraphicsMagick_graphicsmagick linux-CSDN博客 GraphicsMagick在Linux环境的安装 和 im4java的配置_linux im4java-CSDN博客 GraphicsMagick的简单介绍、安装及结合im4java实现图片的压缩、裁剪、文字水印、格式转换功能&…

Postman历史版本下载

1. 下载对应版本的postman 历史版本下载 请把下面链接的"版本号"替换为指定的版本号&#xff0c;例如&#xff1a;8.8.0 Windows64位 ​https://dl.pstmn.io/download/version/版本号/win64​ Windows32位 https://dl.pstmn.io/download/version/版本号…

解决TensorRT加速推理SDXL出现黑图问题

文章目录 解决TensorRT加速推理SDXL出现黑图问题1. fp162. 更换vae 解决TensorRT加速推理SDXL出现黑图问题 一般产生黑图&#xff0c;仅需要修改下面两个问题即可解决。 1. fp16 将pipeline中的fp16修改为fp32。 在使用稳定扩散&#xff08;Stable Diffusion&#xff09;生…

基于图像的照明(IBL)简明教程

基于图像的照明基本上将图像中的所有像素视为光源。 通常&#xff0c;从全景高动态范围 (HDR) 图像创建的环境贴图&#xff08;通常是立方体贴图&#xff09;将用作纹理获取的源。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 假设阴影物体是不透明的&#xff0c;我们…

JVM(一)

字节码文件的组成: 基础信息:魔数&#xff0c;字节码文件对应的java版本号&#xff0c;访问表示public final以及父类和接口 常量池:保存了字符串常量&#xff0c;类或者是接口名&#xff0c;字段名&#xff0c;主要在接口中使用 字段:当前类或者是接口声明的字段信息 方法:当…

13 Java生产者是如何管理TCP连接的

为什么采用TCP连接 为什么采用TCP连接作为底层的通讯协议&#xff1f; 1.利用TCP协议本身的高级功能。比如多路复用请求和同时轮询多个连接的能力。 多路复用请求会在一个物理连接上创建多个虚拟连接&#xff0c;每个虚拟连接负责流转各自的数据流。 什么时候创建TCP连接 1.…

Spring之IoC

Spring的设计理念和整体架构 一句话概括就是&#xff1a;Spring是一个轻量级的、非侵入式的控制反转(IOC)和面向切面(AOP)的框架。 设计理念&#xff1a; 松散耦合&#xff1a; Spring鼓励开发者编写松散耦合的代码&#xff0c;通过依赖注入和接口抽象等方式来减少组件之间的…

蓝桥等考Python组别十八级002

第一部分:选择题 1、Python L18 (15分) 运行下面程序,输入30,输出的结果是( )。 t = int(input()) if t < 30: print(15) else: print(t // 15 * 2) 15401正确答案:B 2、Python L18 (15分)