[C++]c++11部分新特性(不足会更新)

news/2025/1/19 14:17:02/

⭐auto
auto可以自己从初始化表达式中判断出变量的数据类型,能够大大简化我们的编程工作。它实际上在编译时对变量进行了类型推导,所以不会对程序的执行效率造成不良影响

auto a; // 错误,auto是通过初始化表达式进行类型推导,假设没有初始化表达式,就无法确定a的类型
auto i = 1;//int
auto d = 1.0;//double
auto str = "Hello World";//string
auto ch = 'A';//char
vector <int> v;
auto ite = v.begin();//iterator
auto p = new foo() // 对自己定义类型进行类型推导

auto可以用于for循环来简化代码
在C++中for循环能够使用类似java的简化的for循环,能够用于遍历数组、容器、string以及由begin和end函数定义的序列(即有Iterator),演示样例代码例如以下:

map<string, int> m{{"a", 1}, {"b", 2}, {"c", 3}};//定义哈希表
for (auto p : m){cout<<p.first<<" : "<<p.second<<endl;//遍历哈希表
}
string str("hello world");
for (auto c : str) {cout << c;//遍历字符串
}

⭐Lambda表达式
lambda表达式类似Javascript中的闭包,它能够用于创建并定义匿名的函数对象,以简化编程工作。Lambda的语法例如以下:
[函数对象參数](操作符重载函数參数)->返回值类型{函数体}

vector<int> iv{5, 4, 3, 2, 1};
int a = 2, b = 1;
for_each(iv.begin(), iv.end(), [b](int &x){cout<<(x + b)<<endl;}); // (1)
for_each(iv.begin(), iv.end(), [=](int &x){x *= (a + b);});     // (2)
for_each(iv.begin(), iv.end(), [=](int &x)->int{return x * (a + b);});// (3)

[]内的參数指的是Lambda表达式能够取得的全局变量。(1)函数中的b就是指函数能够得到在Lambda表达式外的全局变量,假设在[]中传入=的话,即是能够取得全部的外部变量,如(2)和(3)Lambda表达式
()内的參数是每次调用函数时传入的參数。
->后加上的是Lambda表达式返回值的类型。如(3)中返回了一个int类型的变量

⭐long long 类型
扩展精度浮点数,10位有效数字

⭐nullptr 常量
有几种生成空指针的方法:

int *p1 = nullptr; // 等价于int *p1 = 0;
int *p2 = 0;
int *p3 = NULL; // 等价于int *p3 = 0;

在新标准下,建议尽量使用新标准nullptr,nullptr是一种特殊类型的字面值,它可以被转换成任意其它的指针类型,虽然其它的方式也是可以的;

⭐除法的舍入规则
新标准中,一律向0取整(直接切除小数部分)

double a = 12/5;
cout << a << endl;//输出结果为2,删掉了小数部分;

⭐return的高级用法

string make_plural(size_t ctr, const string &word,const string &ending){return (ctr == 1) ? word : word + ending;//如果ctr==1,则返回word,否则返回word+ending
}

http://www.ppmy.cn/news/37997.html

相关文章

解决华为云鲲鹏arm架构运行IoTDB经常自动挂掉

InfluxDB和IotDB介绍与性能对比 Linux MacBook Docker安装IoTDB及使用 解决华为云鲲鹏服务器arm架构运行IoTDB经常自动挂掉 原因: 华为云鲲鹏服务器arm架构运行IoTDB缺少一些lib库 IoTDB有些底层依赖包&#xff0c;机器上的版本太低了&#xff0c;cp一个高版本的就行了 注…

调戏chatGPT(二)下围棋

这次我准备和chatGPT下盘围棋&#xff0c;我先得确认它知道围棋是啥&#xff0c;如果会的话我就不用介绍规则了 t 你会下围棋嘛 作为一名AI助手&#xff0c;我可以模拟下围棋的过程&#xff0c;但是我没有实际的感官&#xff0c;无法看到棋盘和棋子&#xff0c;也无法进行实…

Java SE 基础(5) Java 环境的搭建

Java 虚拟机——JVM JVM &#xff08;Java Virtual Machine &#xff09;&#xff1a;Java虚拟机&#xff0c;简称JVM&#xff0c;是运行所有Java程序的假想计算机&#xff0c;是Java程序的运行环境&#xff0c;是Java 最具吸引力的特性之一。我们编写的Java代码&#xff0c;都…

leetcode39.组合总和

题目链接&#xff1a;leetcode 39 1.题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中…

uniapp国际化配置

1、创建资源文件 创建一个locale文件夹&#xff0c;新增index.js,en.json,zh-hans.json 2.配置locale文件夹中的index.js文件 import Vue from vue import VueI18n from vue-i18n// v8.x import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from .…

AIGC之Stable Diffusion 提示词学徒库

前言 描述&#xff1a;本文主要用来记录 提示词TAG 一、提示词 1、提升画面品质的提示词 masterpiece 杰作best quality 最佳品质ultra highers 超高分辨率8k resolution 8k分辨率realistic 逼真ultra detailed 超细致sharp focus 清晰聚焦RAW photo RAW 照片 大概的权重比…

剪格子

[蓝桥杯 2013 省 A] 剪格子 题目描述 如图 111 所示&#xff0c;333\times 333 的格子中填写了一些整数。 我们沿着图中的红色线剪开&#xff0c;得到两个部分&#xff0c;每个部分的数字和都是 606060。 本题的要求就是请你编程判定&#xff1a;对给定的 mnm\times nmn 的格…

Python学习总结

Python是一门十分流行的编程语言&#xff0c;由于其简单易学、语法清晰、应用广泛等特点&#xff0c;吸引了越来越多的人学习和使用。这是对Python学习中进行总结。 1.基础语法 在Python学习的中&#xff0c;主要学习了Python的基础语法&#xff0c;包括变量、运算符、条件语…