C++11/14
文章平均质量分 98
OH,CGWLMXUP
这个作者很懒,什么都没留下…
展开
-
C++17新特性知识点汇总
C++17的入选特性有非类型模板参数的 auto 模板参数分为两种,一种是类型模板参数,也是我们用得最多的一种:template <typename T, typename U>auto add(T t, U u) { return t+u;}里面的T和U都是类型模板参数。另一种是非类型模板参数,它可以让不同的字面量成为模板的参数:template <typename T, int BufSize>class buffer_t ...原创 2020-09-28 16:24:04 · 493 阅读 · 0 评论 -
C++14新特性知识点汇总
函数返回值类型推导C++14对函数返回类型推导规则做了优化,先看一段代码:#include <iostream>using namespace std;auto func(int i) { return i;}int main() { cout << func(4) << endl; return 0;}使用C++11编译:~/test$ g++ test.cc -std=c++11test.cc:5:16:原创 2020-09-23 16:26:47 · 636 阅读 · 0 评论 -
研究学习-C++11/14高级编程+Boost库 ------- 新式的空指针、初始化、for、函数声明
空指针 typedef decltype(nullptr) nullptr_t;C++11/14新增关键字“nullptr”,解决NULL存在的缺陷(#define NULL 0 实际上是一个整数,而不是真正的指针,有时候会造成语义混淆),nullptr并不是指针,而是一个类型为nullptr_t的编译期常量对象实例初始化统一使用{}初始化变量,称为“列表初始...原创 2019-09-29 19:35:44 · 237 阅读 · 0 评论 -
研究学习-C++11/14高级编程+Boost库 ------- 自动类型推导(auto、decltype、decltype(auto))
C++11/14新增了两个关键字:auto和decltype。它们可以推导出表达式的类型信息,是非常重要的特性,既可以极大地简化代码,更赋予了程序要原来只属于编译器的无上权力。1,autoauto可将其用在赋值表达式里声明变量,并在编译器自动推导出表达式的类型。auto a = 32;用法如上很简单,有几个注意的地方:只能用于赋值语句里的类型推导,不能直接声明变量; 总是...原创 2019-09-27 10:31:18 · 387 阅读 · 0 评论 -
研究学习-C++11/14高级编程+Boost库 ------- 左值、右值与转移语义
早期的C++里只有“左值”,C++11/14标准引入了新的“右值”,他们是现代C++中非常重要的概念,贯穿整个标准。1,定义所有表达式的结果不是左值就是右值 左值(lvalue)是一个函数或者对象实例 广义左值(glvalue,generalized lvalue)包括左值和失效值 失效值(xvalue,eXpiring value)是生命周期即将结束的对象 右值(rval...原创 2019-09-27 09:56:14 · 307 阅读 · 0 评论 -
C++ 11的新特性整理
原创文章,转载请注明:转载自:严健康的个人博客http://www.yanjiankang.cn/本文链接地址:http://www.yanjiankang.cn/cpp_11_new_feature/Lambda 表达式Lambda 表达式就是用于创建匿名函数的。为什么说 lambda 表达式如此激动人心呢?举一个例子。标准 C++ 库中有一个常用算法的库,其中提供了很多算法...转载 2019-08-06 10:43:38 · 146 阅读 · 0 评论 -
C++11/14之Lambda 表达式
Lambda 表达式是 C++11 中最重要的新特性之一,而 Lambda 表达式,实际上就是提供了一个类似匿名函数的特性,而匿名函数则是在需要一个函数,但是又不想费力去命名一个函数的情况下去使用的。这样的场景其实有很多很多,所以匿名函数几乎是现代编程语言的标配。Lambda 表达式基础Lambda 表达式的基本语法如下:[捕获列表](参数列表) mutable(可选) 异常属性 -...原创 2019-01-23 16:29:41 · 232 阅读 · 0 评论 -
C++11/14之区间迭代
基于范围的 for 循环终于,C++11 引入了基于范围的迭代写法,我们拥有了能够写出像 Python 一样简洁的循环语句:int array[] = {1,2,3,4,5};for(auto &x : array) { std::cout << x << std::endl;}最常用的 std::vector 遍历将从原来的样子:...原创 2019-01-23 14:54:24 · 224 阅读 · 0 评论 -
C++11/14之类型推导
在传统 C 和 C++中,参数的类型都必须明确定义,这其实对我们快速进行编码没有任何帮助,尤其是当我们面对一大堆复杂的模板类型时,必须明确的指出变量的类型才能进行后续的编码,这不仅拖慢我们的开发效率,也让代码变得又臭又长。C++11 引入了 auto 和 decltype 这两个关键字实现了类型推导,让编译器来操心变量的类型。这使得 C++ 也具有了和其他现代编程语言一样,某种意义上提供了无需...原创 2019-01-23 14:52:37 · 219 阅读 · 0 评论 -
C++11/14之被弃用的特性
注意:弃用不等于废弃,只是用于暗示程序员这些特性将从未来的标准中消失,应该尽量避免使用。但是,已弃用的特性依然是标准库的一部分,并且出于兼容性的考虑,这些特性其实会『永久』保留。 如果一个类有析构函数,为其生成拷贝构造函数和拷贝赋值运算符的特性被弃用了。 不再允许字符串字面值常量赋值给一个 char *。如果需要用字符串字面值常量赋值和初始化一个 char *,应该使用 ...原创 2019-01-23 14:27:37 · 1370 阅读 · 0 评论 -
C++11/14之智能指针std::unique_ptr
std::unique_ptr 是一种独占的智能指针,它禁止其他智能指针与其共享同一个对象,从而保证了代码的安全:std::unique_ptr<int> pointer = std::make_unique<int>(10); // make_unique 从 C++14 引入std::unique_ptr<int> pointer2 = poin...原创 2019-01-23 18:41:57 · 381 阅读 · 0 评论 -
C++11/14之智能指针std::shared_ptr
std::shared_ptr 是一种智能指针,它能够记录多少个 shared_ptr 共同指向一个对象,从而消除显示的调用 delete,当引用计数变为零的时候就会将对象自动删除。但还不够,因为使用 std::shared_ptr 仍然需要使用 new 来调用,这使得代码出现了某种程度上的不对称。std::make_shared 就能够用来消除显示的使用 new,所以std::make_...原创 2019-01-23 18:40:58 · 254 阅读 · 0 评论 -
C++11/14之无序容器
我们已经熟知了传统 C++ 中的有序容器std::map/std::set,这些容器内部通过红黑树进行实现,插入和搜索的平均复杂度均为O(log(size))。在插入元素时候,会根据<操作符比较元素大小并判断元素是否相同,并选择合适的位置插入到容器中。当对这个容器中的元素进行遍历时,输出结果会按照<操作符的顺序来逐个遍历。而无序容器中的元素是不进行排序的,内部通过 Ha...原创 2019-01-23 18:10:22 · 345 阅读 · 0 评论