【C++11:实用特性】教程文章相关的互联网学习教程文章

[C++模板]Loki中的Length和TypeAt使用C++11特性改进【代码】【图】

C++模板变参实现Loki中的Length和TypeAt一,原Loki中的Length和TypeAt模拟实现如下1,模板文件/********************************** * * Author : szyu * * Date : 2017.1.7 * **************************************/#ifndef __SZYU_LOKI__ #define __SZYU_LOKI__#include <iostream> #include <vector>template <typename T, typename U> class TypeList { publi...

代码中C++11一些新的特性【代码】

通过result_of multimap<typename std::result_of<Fn(Person)>::type, Person> std::result_of<Fn(Arg)>::type可以获取function的返回值,没有魔法数,也没有declval繁琐的写法,很优雅。其实,查看源码就知道result_of内部就是通过declval实现的,作法和方式二一样,只是简化了写法。 std::function<int(int)> fr2,那么fr2就可以代表返回值和参数表相同的一类函数。std::bind用来将可调用对象与其参数一起进行绑定。绑定后可以使...

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:实用特性【代码】

今天逛cplusplus.com发现C++还真多了不少方便使用的特性,先了解些最常用的初始化列表 vector<int> tmp({1,2,3,4});vector<pair<int, int> > tmp_pair({{1, 2},{3, 4}});或者直接初始化,跟一般的数组初始化非常像了 vector<int> tmp = {1, 2, 3, 4};vector<pair<int, int> > tmp_pair ={{1, 2},{3, 4}};for迭代for (int e : tmp) {cout<<e<<endl;}for(pair<int, int>& e : tmp_pair) {cout<<e.first<<","<<e.second<<endl;}...

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++语言特性深究

都说c++难学难精通,所以学习c++时要注意不要半瓶子晃荡,要对概念有着清晰的认识,不懂就问,慢慢积累,练习,自然就不难了。  问题:引用可以作为容器的参数吗?  权威的书都说不可以,但是理由却不是很清楚,查阅相关资料,大概可以说泛型的参数要求是object type,而引用不是。同理,容器也没有存储函数的吧,python中应该可以这么做。  类型萃取是什么?是java中的反射吗?   关于操作符重载:从random_device类中可以...

转载 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++ 三大特性之继承【图】

在未涉及继承概念时, protected和 private 在类内的作用是等价的,都是保护对应的成员(变量或者函数)不被类的实例化对象所访问,仅仅可以在类内进行访问。只有public下的内容可以被对象访问 公有继承public:子类(派生类B)& 父类(基类A),形式 calss B : public A 基类中的public内容可以被继承进派生类,仍为public,在派生类内访问且可以被派生类的对象访问基类中的protected内容可以被继承进派生类中,仍为protected,可以...

细数 C++ 那些比起 C语言 更爽的特性【代码】

结构体定义C:typedef struct Vertex {int x, y, z; } Vertex; Vertex v1 = { 0 };// orstruct Vertex {int x, y, z; }; struct Vertex v1 = { 0 }; C++:struct Vertex {int x, y, z; }; Vertex v1 = {}; 如果你一开始学的C++,再去写C的时候,你就会一脸懵逼怎么我的结构体编译不了。。。为特定类型分配堆内存C:Vertex* ptr = malloc(sizeof(Vertex) * 10); free(ptr); C++:Vertex* ptr = new Vertex[10]; delete[] ptr; malloc 的...

c++中cin.ignore的特性和相关实例【代码】

cin.ignore()函数是C++标准输入流(cin)中的一个方法。cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch )。它表示从输入流 cin 中提取字符,提取的字符被忽略,不被使用。而每抛弃一个字符,它都要进行计数和比较字符:如果计数值达到 a 或者被抛弃的字符是 ch ,则cin.ignore() 函数执行终止;否则,它继续等待。 在本章实例中一次cin.get()只能除去之前缓存区的回车 所以ignore可以帮助程...

C++11常用特性介绍——for循环新用法

一、for循环新用法——基于范围的for循环for(元素类型 元素对象 : 容器对象){//遍历}1)遍历字符串std::string str = "hello world";for(auto ch : str){std::cout << ch << std::endl;}2)遍历数组int arr[] = {1,2,3,4,5};for(auto i : arr){std::cout << i << std::endl;}//不用知道数组容器的大小,即可方便的遍历数组。2)遍历stl容器vector<int> v = {1,2,3,4,5};for(atuo& i : v){std::cout << i << std::endl;}//通过引用可...

【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...