【【C++11新特性】 C++11智能指针之weak_ptr】教程文章相关的互联网学习教程文章

【转】C++11 标准新特性:Defaulted 和 Deleted 函数【代码】

原文链接http://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/本文将介绍 C++11 标准的两个新特性:defaulted 和 deleted 函数。对于 defaulted 函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员手动定义该函数的工作量。对于 deleted 函数, 编译器会对其禁用,从而避免某些非法的函数调用或者类型转换,从而提高代码的安全性。本文将通过代码示例详细阐述 defaulted ...

c++11 新特性之 auto关键字

C++11是对目前C++语言的扩展和修正.C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、decltype,和模板的大量改进。g++编译c++11命令加上-std=c++11C++11中引入auto第一种作用是为了自动类型推导 auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推导,可以简化我们的编程工作 auto实际上实在编译时对变量进行了类型推导,所以不会对程序的运行效率造成不良影响另外,似乎auto并不会影响...

C++11新特性应用--介绍几个新增的便利算法(用于排序的几个算法)【代码】

继续C++11在头文件algorithm中添加的算法。至少我认为,在stl的算法中,用到最多的就是sort了,我们不去探索sort的源代码。就是介绍C++11新增的几个关于排序的函数。对于一个序列,我们怎么知道他是不是有序的呢?这就用到了:is_sorted 原型:template <class ForwardIterator>ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last);template <class ForwardIterator, class Compare>ForwardIterator ...

C++11新特性——初始化列表 initializer_list【代码】【图】

破事水:  由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮。  然后就去膜了一下C++11的新特性——初始化列表,概念就不说了,就讲下这东西具体怎么用吧,就是正常的写一个构造函数,然后把参数改为initializer_list<数据类型> &t  如图所示。可以理解为传入的参数数据被放到了一个储存器t中,利用C++11的auto可以直...

C++11新特性【代码】

语言级别的线程支持#include <iostream>#include <thread>std::thread::id main_thread_id = std::this_thread::get_id();void hello() {std::cout << "Hello Concurrent World\n";if (main_thread_id == std::this_thread::get_id())std::cout << "This is the main thread.\n";elsestd::cout << "This is not the main thread.\n"; }void pause_thread(int n) {std::this_thread::sleep_for(std::chrono::seconds(n));std::cou...

C++11 新特性,运行时断言与静态断言【代码】

C98或C99中的库为:<cassert> 或<assert.h>运行时断言,故明思议是当程序在运行的时候才作为判决,可以认为是对参数的有效性的判断。而静态断言,是对参数的条件判断提前做了,在预编译的时候进行完成的。如://demo1.cpp #include <cassert>usingnamespace std;char *arrayAolloc(int n){assert(n>0); returnnewchar [n]; }int main(){char * a = arrayAolloc(0);return0; }//gcc demo1.cpp -omainassert(n>0); 该条件只会在当arr...

C++11新特性【代码】

1、结构体内直接赋初始值struct Student{char* name = nullptr;unsigned int age = 15;int number = 21509111; };如此一来,所有声明的新结构体对象就是默认上面的值。原文:https://www.cnblogs.com/fuqia/p/9538273.html

c++11新特性【代码】

编译环境:Windows 10 + elclipse +gcc-8.1.01、类型推导C++11 引入了 auto 和 decltype 这两个关键字实现了类型推导,由编译器在编译过程中完成类型推断过程。区别: 1)语法格式区别auto varname = value;         // auto 根据=右边的初始值 value 推导出变量的类型,且varname必须初始化。 decltype(exp) varname = value;   // decltype 根据 exp 表达式推导出变量的类型,跟=右边的 value 没有关系。原则上,exp ...

转载 C++11新特性学习【代码】

自己一直用的是C++98规范来编程,对于C++11只闻其名却没用过其特性。近期因为工作的需要,需要掌握C++11的一些特性,所以查阅了一些C++11资料。因为自己有C++98的基础,所以从C++98过渡到C++11并不算特别吃力,读了一些书籍后,算是对C++11有了个比较基础的理解,感觉程序员还是要经常保持新语言新特性的更新,现在 C++ 标准都出到C++17了!这篇文章就是对C++11一些常用新特性的一些总结,以C++98和 C++11在语法上的差异来突出C++1...

C++11新特性(1) 右值引用【图】

在C++中,左值(lvalue)是可以获取其地址的一个量。由于经常出现在赋值语句的左边,因此称之为左值。例如一个有名称的变量。 例如:int a=10;//a就是一个左值。 传统的C++引用,都是左值引用。例如:int &ra=a;将ra关联到a。这就是左值引用。 C++11,新增了右值引用的概念。用&&代表右值引用。 首先我们来看一下什么叫做右值。可以说所有不是左值的量都是右值。例如文本,临时对象或者临时值(都是不能获取地址的量)。 ...

【C++11】新特性——Lambda函数【代码】

本篇文章由:http://www.sollyu.com/c11-new-lambda-function/文章列表本文章为系列文章【C++11】新特性——auto的使用 http://www.sollyu.com/c11-new-features-auto/【C++11】新特性——Lambda函数 http://www.sollyu.com/c11-new-lambda-function/说明在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find,用户经常希望能够在算法函数调用的附近定义一个临时的述部函数(又称谓词函数,predicate function)。由于...

【C++11新特性】 C++11智能指针之weak_ptr

如题,我们今天要讲的是C++11引入的三种智能指针中的最后一个:weak_ptr。在学习weak_ptr之前最好对shared_ptr有所了解。 1、为什么需要weak_ptr? 在正式介绍weak_ptr之前,我们先来回忆一下shared_ptr的一些知识。我们知道shared_ptr是采用引用计数的智能指针,多个shared_ptr实例可以指向同一个动态对象,并维护了一个共享的引用计数器。对于引用计数法实现的计数,总是避免不了循环引用(或环形引用)的问题,shared_ptr也不例...

C++11 新特性之 序列for循环【代码】

在C++中在C++中for循环能够使用相似java的简化的for循环,能够用于遍历数组,容器,string以及由begin和end函数定义的序列(即有Iterator)#include <iostream> #include <map> #include <string> using namespace std;int main() { map<string, int> ms;ms.insert(make_pair("a", 1));ms.insert(make_pair("b", 2));ms.insert(make_pair("c", 3));ms.insert(make_pair("d", 4));for (auto itr: ms)cout << itr.first << ":" << itr.sec...

c++11新特性std::function、std::bind封装可执行对象【代码】【图】

转载:https://www.cnblogs.com/feng-sc/p/5710724.html#title11 std::bind和std::function也是从boost中移植进来的C++新标准,这两个语法使得封装可执行对象变得简单而易用。此外,std::bind和std::function也可以结合我们一下所说的lamda表达式一起使用,使得可执行对象的写法更加“花俏”。我们下面通过实例一步步了解std::function和std::bind的用法:Test.h文件//Test.h 示例代码1.0 http://www.cnblogs.com/feng-sc/p/571072...

C++11部分新特性总结【代码】

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于TC1主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个...