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会变空,

相关推荐
MuMuMu1223几秒前
文旅户外场景智能回收终端工程难点解析:越华环保集团碳惠小屋耐候与供电系统实践
java·大数据·算法
夏霞1 分钟前
c# 不支持的目标框架 解决方案
开发语言·c#
雄哥0079 分钟前
java代码反编译CFR
java·开发语言·反编译·cfr
lsylalalala13 分钟前
多线程(2)
java·开发语言·多线程
星恒随风15 分钟前
C++11详解(一):统一初始化——列表初始化与 initializer_list
c++·笔记·学习·list·状态模式
jimy122 分钟前
右值大类rvalue的xvalue,和 左值大类glvalue的xvalue的区别
开发语言·c++
玖玥拾23 分钟前
LeetCode 205 同构字符串
算法·leetcode
影视飓风TIM27 分钟前
C++哈希表:unordered_set / unordered_map底层原理
c++·算法·哈希算法·散列表
geovindu27 分钟前
CSharp: Template Method Pattern
开发语言·后端·c#·.net·模板方法模式·行为模式
专注API从业者29 分钟前
Open‑Claw 实战|无需逆向,快速搭建电商商品监控与数据分析系统
开发语言·数据结构·数据库·数据分析·php