c++11新特性系列
我叫龙傲天
相信微末的力量
展开
-
c++11新特性(1)之auto
autoauto这是一个很小的语法,就是让编译器自动推测对象的类型,需要注意的是一定要保证编译器可以推测出此对象的类型,不能出现模棱两可的情况。不过话又说回来对于c++来说,时刻清除对象的类型,恐怕是读懂程序的基础,auto只是一种偷懒的做法,平时自己写代码的时候,不建议使用,能看懂别人写的代码就行。下面附一个小例子: // sort algorithm example#include...原创 2019-07-29 17:50:41 · 458 阅读 · 0 评论 -
c++11新特性(2)之for循环
for新特性中的for循环让我,差点以为是Python,不过是真的好用。没什么好解释的,直接看例子,注意还可以传引用,实在是太强啦。#include <iostream> // std::cout#include <algorithm> // std::sort#include <vector> // std::vec...原创 2019-07-29 19:57:50 · 247 阅读 · 0 评论 -
c++11新特性(3)之可变参数模板(variadic template)
可变参数模板(variadic template)听说这是一个c++新特性 中最大的改动,我的认识有限只能写一些十分基础的理解,但我会持续更新。所谓可变参数模板,就是模板函数的参数是可以变化的,不是一个、两个参数,而是一包参数,这一包参数可以是0个到n个,这种将参数打包的操作就是可变参数模板。具体的语法如下:template<typename T,typename... Arg...原创 2019-07-29 21:52:44 · 2305 阅读 · 0 评论 -
c++11新特性(4)之spaces in template expressions(模板表达式中的空格)
spaces in template expressions(模板表达式中的空格)vector<list<int> >;//“> >”在最后两个箭头之间有一个空格,c++11之前的版本要求必须有这个空格vector<list<int>>;//c++11中可以省略掉这个空格,使得程序更加美观...原创 2019-08-20 17:07:23 · 390 阅读 · 0 评论 -
c++11新特性(5)之nullptr、NULL、0之间的区别
NULL 和 “0”之间是等价的,因为NULL只是一个宏定义。而nullptr是c++11中新出现的一个对象,这是一个空的指针对象。初始化一个空指针时,推荐使用int* p = NULL;//c++11之前的写法int* P_1 = nullptr;//c++11推荐写法...原创 2019-08-20 17:27:33 · 578 阅读 · 0 评论 -
c++11新特性(6)之uniform initialization(标准初始化)以及initializer_list
uniform initialization(标准初始化)在c++11之前的版本,初始化是一个没有被统一的写法,有时候用小括号,有时候用大括号,有时候还用赋值号,我之前在学习C语言的时候就深有体会,在c++11中就统一了初始化的形式——“{ }”,直接在对象名后面跟大括号,并在大括号中写入需要初始化的值,并用逗号隔开。甚至类构造函数的初始化列表也可以用“{}”大括号,比如:int val...原创 2019-08-20 21:06:03 · 864 阅读 · 0 评论 -
c++11新特性(7)之push_back与emplace_back之间的区别
c++11新加入了emplace_back():如果要将一个临时变量push到容器的末尾,push_back()需要先构造临时对象,再将这个对象拷贝到容器的末尾,而emplace_back()则直接在容器的末尾构造对象,这样就省去了拷贝的过程。请看代码:#include <iostream>#include <cstring>#include <ve...原创 2019-08-31 12:54:46 · 9848 阅读 · 5 评论