c++11的初见

列表初始化

c++11以后支持{ }的列表初始

可以使用{ }括住数据来进行初始化,使用{ }初始化时可以省略=号

{ }中的数据要匹配构造;

使用{ }可以统一初始化方式。

cpp 复制代码
#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<pair<int,int>>vp;
	vp.push_back({1,2});
	cout<<vp.front().first<<" "<<vp.front().second;
} 

右值引用和移动语义

左值和右值

特征 左值 (lvalue) 右值 (rvalue)
内存地址 有确定的内存地址,可被 & 取址 无稳定地址,不可被 & 取址
生命周期 持久存在,表达式结束后依然有效 短暂存在,通常在当前语句结束后销毁
赋值操作 通常可放在赋值号 = 左边(const 左值除外) 只能放在赋值号 = 右边
典型示例 变量名、解引用指针 *p、数组元素 arr[i]++i 字面量 10、算术表达式 a+b、函数返回的临时对象、i++

右值引用就是给右值取别名;

左值引用不可以直接引用右值;

const 左值可以使用右值引用

const int & rx1=10;

右值引用不可以直接引用左值;

右值可以使用move函数给左值引用

int&& rrx1=move(b);

move标记的数据可以被抢夺数据。

string s2=move(s1),s1会变空,

相关推荐
leoZ23112 分钟前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino
会周易的程序员34 分钟前
aiDgePLC — IEC61131-3 ST PLC 虚拟机调试与运行环境
c++·物联网·虚拟机·st·工业协议·iec61131·梯形图
程序员老陆35 分钟前
Qt的QThread::usleep和FFmpeg的libavutil模块的av_usleep哪个精度高一些?
开发语言·qt·ffmpeg·音视频
2601_963869951 小时前
【计算机毕业设计】基于Java的相框定制系统的设计与实现
java·开发语言·课程设计
lsylalalala1 小时前
常见的排序算法1
数据结构·算法·排序算法
名字还没想好☜2 小时前
Go 的 unsafe.Pointer 实战:零拷贝 []byte↔string 转换与三条铁律
开发语言·后端·golang·go·unsafe
想吃火锅10052 小时前
【leetcode】54. 螺旋矩阵
算法·leetcode·矩阵
wuminyu2 小时前
JVM利用io_uring优化堆外内存性能原理剖析
java·linux·c语言·jvm·c++
gumichef2 小时前
第二章:C/C++内存管理
c++·内存管理
想吃火锅10052 小时前
【leetcode】300. 最长递增子序列
算法·leetcode·职场和发展