C++新特性复习1 版本11

参照来自于:

cppreference.com

老实说,我是毕业不久就开始用C++,原因就是VC++,当时用来做界面。还好吧,不是觉得太难,起码对数学底子没有要求,后面偶尔也用用,但是整体还是C居多。现在项目又要用,但是很多语法有点看不懂了,所以复习一下下。

先从11开始吧,

从特性上看:指针方面unique_ptr,shared_ptr,weak_ptr。条件语句  for − range-for。初始化initializer_list。容器的新特性:vector − deque − array  list − forward_list unordered_map unordered_multimap unordered_set unordered_multiset。

新的工具库:Metaprogramming library。工具库Function objects − hash,Swap − Type operations,pair − tuple。数学库:Floating-point environment。正则表达式库Regular expressions library。最后是并发库Concurrency support library。

一个个简单看看吧。

一 特性

1 auto类型

这个很嗲啊。。。明天一定要试试!

auto x = 10;  // x is int
auto y = 1.5; // y is double

2 range-for

就是简化了的for,还行吧。虽然python这些特性早就烂大街了。

std::vector<int> v = {1, 2, 3, 4};
for (int i : v) {std::cout << i << ' ';
}

3 lambda

这个确实不爱用。。。

4 智能指针

大概看了下,就是只用管分配内存就行了,释放内存可以自动搞。

分配的时候使用auto uniquePtr = std::make_unique<int[]>(5);类似这样的写法。空了还是多练练吧。。。

std::unique_ptr<int> p1(new int(10));
std::shared_ptr<int> p2 = std::make_shared<int>(20);

5 编译时期断言

还行吧,这个有的话也行。。。

std::unique_ptr<int> p1(new int(10));
std::shared_ptr<int> p2 = std::make_shared<int>(20);

6 新的null,nullptr。这个其实简单,照着用就行了。

int* p = nullptr;

7 强枚举。

解决枚举冲突,还行吧。

enum class Color { Red, Green, Blue };
Color c = Color::Red;

8 常量表达式,constexpr

好像有用,有好像没用。。

constexpr int square(int x) { return x * x; }
int y = square(5); // y 在编译期被计算为 25

9 长长整形long long int

64位整形数

long long int largeNumber = 10000000000LL;

10 initializer_list

用花括号初始化。好像也是python玩烂了的。。。

std::vector<int> vec = {1, 2, 3, 4, 5};  // 使用 initializer_list 初始化 vector

二 库

1 标准线程库 (Thread library)

void threadFunction() {std::cout << "Hello from thread!\n";
}std::thread t(threadFunction);
t.join();

2 随机数库

还行吧,一般用C的也不是不行。。。

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 6);
std::cout << dis(gen); // 随机输出 1 到 6 之间的整数

3 正则表达式库

std::regex re("\\d+");
std::smatch match;
if (std::regex_search("123", match, re)) {std::cout << "Match found: " << match.str() << '\n';
}

4 新容器

std::array<int, 3> arr = {1, 2, 3};
std::unordered_map<std::string, int> map = {{"one", 1}, {"two", 2}};

5 时间库

auto start = std::chrono::high_resolution_clock::now();
// 执行某些操作
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> duration = end - start;
std::cout << "Operation took " << duration.count() << " seconds.\n";

6 其他

比如一些算法

std::vector<int> vec = {1, 2, 3, 4, 5};
bool allPositive = std::all_of(vec.begin(), vec.end(), [](int i){ return i > 0; });

感觉就是auto类型和智能指针可以多用用。其它的知道就行了,要用的时候再学也来得及。

但是有一点,如果用了C++11这些特性,和C的差别越来越大了。要移植或者混用,到时候麻烦的事情会更多。到底用不用呢?真的要tradeoff。。。

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

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

相关文章

基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 系统架构 4.2 GoogLeNet网络简介 4.3 手势检测 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 训练过程如下&#xff1a; 将摄像头对准手势&#xff0c;然后进行…

【Kubernetes】k8s--安全机制

机制说明 Kubernetes 作为一个分布式集群的管理工具&#xff0c;保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介&#xff0c; 也是外部控制的入口。所以 Kubernetes 的安全机制基本就是围绕保护 API Server 来设计的。 比如 kubectl 如果想向 …

Commons-Collections篇-CC2链分析

前言 3.1-3.2.1版本中TransformingComparator并没有去实现Serializable接口&#xff0c;是不可以被序列化的&#xff0c;所以我们重新搭建一个4.0的具有漏洞的CC环境 CC2链主要使用的和CC4一样&#xff0c;但是区别在于CC2避免了使用Transformer数组&#xff0c;没有使用Insta…

q-table重写分页

<template #bottom"scope"><q-space/><div class"row">每页的行数&#xff1a;<q-selectv-model"scope.pagination.rowsPerPage"borderless:options"[10,20,30,50]"></q-select> <div class"ro…

elementui写一个自定义的rangeInput的组件

组件定义 使用el-row确保元素都在一行上对外暴露的prop是minValue和maxValue&#xff0c;但是不建议直接使用&#xff0c;使用计算属性minValueComputed和maxValueComputed更改计算属性的值的不要直接更改计算属性&#xff0c;也不要直接更改原本的prop&#xff0c;通知外层的父…

网络命令大全windows linux

涉及到网络命令时&#xff0c;以下是一些常用的命令和它们的作用&#xff0c;这些命令可以在Windows命令提示符或者Unix/Linux终端中使用。这些命令有助于管理网络连接、解决网络问题以及进行网络诊断。 Windows 命令 ipconfig 显示本地计算机的网络配置信息&#xff0c;包括I…

Aeron:Common Errors

Aeron 遇到的大多数问题通常都是由于资源问题造成的&#xff0c;如 CPU 资源不足、磁盘 I/O 速度慢、内存分页等。Linux 提供了许多工具来帮助诊断这些问题&#xff0c;其中一些工具将在 Aeron Troubleshooting 部分进行介绍。 一、Aeron timeouts Media Driver Timeout Medi…

6.深度卷积神经网络

目录 1.深度卷积神经网络ALexNet 2012AlexNetAlexNet架构AlexNet与LeNet复杂度对比总结代码实现2.使用块的网络VGG 2014 image竞猜第二VGG架构进度总结代码实现3.网络中的网络NiN全连接层的问题NiN块NiN架构总结代码实现4.含并行连结的网络(GoogLeNet)2014 image竞猜第一最好…

总结CSS 实现新手引导效果的六种方式

前言 我们在平常做业务中&#xff0c;在功能变更&#xff0c;或者有大的改动时&#xff0c;经常会用到新手引导功能&#xff0c; 虽然有很多库可以使用&#xff0c; 但是有时候很简单的需求&#xff0c;没必要引入库&#xff0c; 本文用最简化代码&#xff0c;实现一下新手引导…

这些常用 MySQL 用法,99% 的人都不知道!

本文首发于公众平台&#xff1a;腐烂的橘子 MySQL 对于后端程序员来讲是最熟悉不过了&#xff0c;不过 MySQL 有一些基本用法&#xff0c;99% 的人都不知道&#xff0c;考验技术基本功的时候到了&#xff0c;快来看看有没有你不知道的&#xff1a; select select 0,2,3,4; 会…

大数据开发语言Scala(一) - Scala入门

引言 在当今的大数据时代&#xff0c;数据量和数据处理的复杂性不断增加&#xff0c;传统的编程语言已经难以满足需求。Scala作为一门新兴的编程语言&#xff0c;以其简洁、强大和高效的特性&#xff0c;迅速成为大数据开发的热门选择。本文将详细介绍Scala语言的基础知识&…

react中useEffect函数的详细用法

1、函数介绍 useEffect 是 React 中的一个 Hook&#xff0c;用于在函数组件中处理副作用&#xff08;如数据获取、订阅、手动更改 DOM 等&#xff09;。与类组件中的生命周期方法&#xff08;如 componentDidMount、componentDidUpdate 和 componentWillUnmount&#xff09;类…

Java面试题之MySQL事务详解

事务是什么 MySQL中的事务&#xff08;Transaction&#xff09;是数据库管理系统执行的一个逻辑操作单元&#xff0c;它是由一系列数据库操作组成的逻辑工作单元。事务是并发控制的单位&#xff0c;也是用户定义的一个操作序列。事务的主要目的是确保数据的完整性和一致性&…

new char(20)和new char[20]区别

这两个语句都是用于动态分配内存并返回指向该内存的指针&#xff0c;但它们之间有一些重要的区别。 char* p new char(20);: 这条语句分配了一个char类型的内存块&#xff0c;只包含一个元素&#xff0c;其值初始化为20。这意味着p是一个指向包含单个char值的内存块的指针。在…

JAVA小知识23:set与HashSet

一、Set 1.1、Set的基本知识 set也是单列集合的一种&#xff0c;用于存储一组不重复的元素。它是一种集合数据类型&#xff0c;常用于需要确保元素唯一性和快速查找的场景。他有如下特点&#xff1a; 无序性&#xff1a;Set 中的元素是无序的&#xff0c;没有特定的顺序。唯…

【JVM】类的⽣命周期和类加载的过程

在Java中&#xff0c;类的生命周期和类加载过程是Java虚拟机&#xff08;JVM&#xff09;管理的核心部分。类的生命周期包括从类被加载到内存直到类被卸载的整个过程。类加载过程可以细分为多个阶段&#xff1a;加载、链接&#xff08;包括验证、准备、解析&#xff09;、初始化…

代码签名证书申请指南

申请代码签名证书的具体流程可以归纳为以下几个步骤&#xff1a; 1、确定证书类型&#xff1a; 根据您的需求选择合适的代码签名证书类型。常见的有OV&#xff08;Organization Validation&#xff0c;组织验证&#xff09;代码签名证书和EV&#xff08;Extended Validation&am…

Elasticsearch-ES查询单字段去重

ES 语句 整体数据 GET wkl_test/_search {"query": {"match_all": {}} }结果&#xff1a; {"took" : 123,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0…

R语言自定义vlookup函数

############################################################## #######自定义函数integrate_and_match_values用于提取数据 ############################################################# integrate_and_match_values <- function(target_data,target_id_col,target_…

(一)Kafka 安全之使用 SSL 的加密和身份验证

目录 一. 前言 二. 使用 SSL 的加密和身份验证 2.1. 为每个 Kafka Broker 生成 SSL 密钥和证书 2.1.1. 主机名验证&#xff08;Host Name Verification&#xff09; 2.1.2. 注意&#xff08;Note&#xff09; 一. 前言 SSL&#xff08;Secure Sockets Layer&#xff09;是…