c++11

深入了解c++11 移动语义与右值引用

1.移动语义 C++11新标准中一个最主要的特性就是提供了移动而非拷贝对象的能力。如此做的好处就是,在某些情况下,对象拷贝后就立即被销毁了,此时如果移动而非拷贝对象会大幅提升性能。参考如下程序: //moveobj.cpp #include <iostream> #include <vector> using namespace std; class Obj { publi... »

一文读懂c++11 Lambda表达式

1.简介 1.1定义 C++11新增了很多特性,Lambda表达式(Lambda expression)就是其中之一,很多语言都提供了 Lambda 表达式,如 Python,Java ,C#等。本质上, Lambda 表达式是一个可调用的代码单元[1]^{[1]}[1]。实际上是一个闭包(closure),类似于一个匿名函数,拥有捕获所在作用域中变量的能力,能够将函数做为对象一样使用,通常用来实... »

c++11&14-智能指针要点汇总

学c++的人都知道,在c++里面有一个痛点,就是动态内存的管理,就我所经历的一些问题来看,很多莫名其妙的问题,最后都发现是内存管理不当引起的。 但像java等其他一些语言则不会有这样的问题,为什么呢,因为它们有很好的处理内存的方法,比如java的垃圾回收机制,现在,我们c++终于也有了智能指针。 1. 什么是智能指针 简单地说,智能指针是用对象去管理一个资源指针,同时用一个计数器计算引用当前指针对... »

c++11&14-多线程要点汇总

在C++11以前,C++的多线程编程均需依赖系统或第三方接口实现,一定程度上影响了代码的移植性。C++11中,引入了boost库中的多线程部分内容,形成C++标准,形成标准后的boost多线程编程部分接口基本没有变化,这样方便了以前使用boost接口开发的使用者切换使用C++标准接口,很容易把boost接口升级为C++标准接口。 我们通过如下几部分介绍C++11多线程方面的接口及使用方法。 1. ... »

C++11智能指针中的 unique_ptr实例详解

在前面一篇文章中,我们了解了 C++11 中引入的智能指针之一 shared_ptr 和 weak_ptr ,今天,我们来介绍一下另一种智能指针 unique_ptr 。这一点和我们前面介绍的 shared_ptr 类型指针有很大的不同:shared_ptr 允许多个指针指向同一对象,而 unique_ptr 在某一时刻只能有一个指针指向该对象。unique_ptr 保存指向某个对象的指针,当它本... »

c++11&14-STL要点汇总

在c++里面不得不提的一个标准库,就是STL,STL包含很多实用的数据结构,如vector,list,map,set等都是我们常用的,而c++11也对STL做了一些补充,使得STL的内容越来越丰富,可选择的也越来越多了。 1. std::array 先看一段代码: #include <array> #include <iostream> int main() { std::... »

c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind

GCC的C++符号修饰方法如下:1)所有符号都以_z开头2)名字空间的名字名字空间(或类)的名字前加上N名字前还有一个数字,是名字的字符数。您可能感兴趣的文章:C++ 中const修饰虚函数实例详解C++ const修饰变量和修饰函数介绍 »

C++11特性小结之decltype、类内初始化、列表初始化返回值

泛型编程中使用decltype:通过和尾置返回类型结合,可以使得返回值可以由编译器推断,无需程序员指出。vector process();}总结到此这篇关于C++11特性小结之decltype、类内初始化、列表初始化返回值的文章就介绍到这了,更多相关C++11特性decltype、类内初始化、列表初始化返回值内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网! »

详解c++11新特性之模板的改进

C++11关于模板有一些细节的改进: 模板的右尖括号 模板的别名 函数模板的默认模板参数模板的右尖括号C++11之前是不允许两个右尖括号出现的,会被认为是右移操作符,所以需要中间加个空格进行分割,避免发生编译错误。模板的别名C++11引入了using,可以轻松的定义别名,而不是使用繁琐的typedef。 »

基于c++11的event-driven library的理解

做了一个不到200行的事件驱动库,基于c++11标准,header-only,跨平台。支持自定义事件,通过wake_up函数异步唤醒。写这个库的动机是想为之前自己写的日志库提供日志回滚机制。 github:https://github.com/chloro-pn/event_pool event_pool 基本介绍 a header-only event-driven library based ... »

C++11 并发指南之多线程初探

C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧,和大家共勉。相信 Linux 程序员都用过 Pthread, 但有了 C++11 的 std::thread 以后,你可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大的提高,所以... »

在这里插入图片描述

c++11 mem_fn

函数模板 std::mem_fn 生成指向成员指针的包装对象,它可以存储、复制及调用指向成员指针。到对象的引用和指针(含智能指针)可在调用 std::mem_fn 时使用。 有点类似于std::bind,提前绑定好成员指针,调用的时候传递类实例即可,看一个简单例子就一目了然了 #include #include struct int_holder { int value; int triple()... »

学习笔记(12):c++11并发与多线程-async、future、packaged_task、promise

utm_source=blogtoedu1. std::async、std::futrue创建后台任务并返回值希望线程返回一个结果std::async是一个函数模版,用来启动一个异步任务,启动一个异步任务后,他返回一个std::future对象,std::futrue是一个类模版。程序会卡在get,直到子线程执行结束并返回值,所以一定要有返回值。 »

C++11的多线程并发编程(一)

C++11的多线程并发编程(一) 在疫情期间以及未来毕业后即将工作的憧憬中,给自己立个学习flag,学习并第一次通过CSDN记录下C++11的多线程并发编程。初学者的我写的不好,还望大家多多指正与批评, 学习多线程并发编程首先一定得熟悉并发相关概念,其中包括可执行程序,进程,线程,C++11。 了解基础概念 可执行程序 当在windows系统下,鼠标双击某后缀名.exe软件时,通过后台查看,运行的... »

c++11 std::move() 的使用

std::move函数可以以非常简单的方式将左值引用转换为右值引用。(左值、左值引用、右值、右值引用 参见:http://www.cnblogs.com/SZxiaochun/p/8017475.html) 通过std::move,可以避免不必要的拷贝操作。 std::move是为性能而生。 std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝... »

【c++11】基本类型与字符串转换

1.基础类型转为字符串api:std::to_stringDefined in headerstd::stringto_string(intvalue);(1)(since C++11)std::stringto_string(longvalue);(2)(since C++11)std::stringto_string(longlongvalue);(3) »

DevC++支持C++11特性终极指南

DevC++支持C++11特性终极指南

笔者捣鼓了一个上午不知道为什么直接添加-std=c++以后还是不可以,所以记录这一篇文章给大家参考。 »

c++11智能指针

智能指针     智能指针是行为类似于指针的类对象。可以帮助管理动态内存分配。普通指针分配内存后都必须释放内存 new 之后需要使用 delete 否则内存泄漏。智能指针类对象封装了自动释放内存的功能 从而避免内存泄漏 例如 void remodel(std::string & str) { std::string * ps = new std::string(str); //str = ... »

C++ 异常的详细介绍

C++ 异常的详解 程序有时会遇到运行阶段错误,导致程序无法正常执行下去。c++异常为处理这种情况提供了一种功能强大的而灵活的工具。异常是相对比较新的C++功能,有些老编译器可能没有实现。另外,有些编译器默认关闭这种特性,我们可能需要使用编译器选项来启用它。 一、异常机制的使用 异常提供了将控制程序的一个部分传递到另一部分的途径。对异常的处理有3个组成部分: 引发异常 使用处理程序捕获异常 使用t... »

C++ using namespace std 用法深入解析

一 :<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀... »

C++ 11新特性之大括号初始化详解

本文主要给大家介绍了关于C++11新特性之大括号初始化的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: C++11之前,C++主要有以下几种初始化方式: //小括号初始化 string str("hello"); //等号初始化 string str="hello"; //大括号初始化 struct Studnet{ char* name; int age; }; Stu... »

C++标准之(ravalue reference) 右值引用介绍

1、右值引用引入的背景 临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题。但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了CopyElision、RVO(包括NRVO)等编译器优化技术,它们可以防止某些情况下临时对象产生和拷贝。下面简单地介绍一下CopyElision、RVO,对此不感兴趣的可以直接跳过: (1)CopyElision CopyElisio... »

C++11右值引用和std::move语句实例解析(推荐)

右值引用(及其支持的Move语意和完美转发)是C++0x将要加入的最重大语言特性之一。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从库使用者的角度讲,不动一兵一卒便可以获得“免费的”效率提升… 下面用实例来深入探讨右值引用。 1.什么是左值,什么是右值,简单... »

C++ 11和C++98相比有哪些新特性

C++11标准提供了许多有用的新特性。这篇文章特别针对使C++11和C++98相比看上去像一门新语言的特性,因为: C++11改变了书写C++代码的风格和习惯,也改变了设计C++库的方式。例如,你会看到更多的被当作参数和返回值的智能指针,还有按值(by value)返回巨大对象的函数。 它们被使用的非常广泛,在大多数代码中你都能看到它们。举个例子,在现代C++中几乎每5行C++代码你就能看到aut... »

详谈c++11 final与override说明符

如下所示: //final,override出现在形参列表以及尾置返回类型之后 #include <iostream> using namespace std; struct B{ virtual void f1(int) const; virtual void f2(int); void f3(int) final;//出错,final不能修饰非虚函数 }; struct D:B{ ... »

Page 1 of 212