C++11
文章平均质量分 57
「已注销」
这个作者很懒,什么都没留下…
展开
-
C++11 Lambda 表达式
一、Lambda 表达式先用中文表示,类似下面[外部变量访问方式说明符] (参数表) -> 返回值类型{ 语句块}简单的形式[](){} 或者 []()->void{}返回值类型可忽略1、[ ]Lambda 表达式标志的开始里面可填写1、[=]:以值的方式捕捉外部的变量,注意是值的方式。2、[&]:以引用方式捕捉外部的变量,注意是引用方式。3、[a]:只以值的方式捕捉变量 a...原创 2022-01-10 11:50:31 · 128 阅读 · 0 评论 -
C++11 存储任意类型(std::tuple)
一、std::tuple我们知道,我平常使用的数组都是同一种类型的比如int arr[] = { 1,2,3,4 }; // arr 数组里面的元素类型都是 int那有人就想了,下面不就是不同种类型吗我们编译一下看看可以看到,发生了隐式转换,最后调试结果int arr[] = { 1, 2.6, 3, 4 };std::cout << arr[1] << std::endl;这时候我们想存放不同类型就用到了std::t...原创 2022-01-10 11:15:43 · 2184 阅读 · 0 评论 -
C++11 字符串转换函数
一、转换函数stoi(): 字符串转换为 intstol(): 字符串转换为 longstoll(): 字符串转换为 long longstof(): 字符串转换为 floatstod(): 字符串转换为 doubleto_string():整形或浮点型转换为字符串二、举个栗子1、#include <iostream>#include <...原创 2022-01-09 23:15:05 · 506 阅读 · 0 评论 -
C++11 输出原始字符串
一、原始字符串看下面代码#include <iostream>#include <string>using namespace std;int main(int argc, char ** argv){ string str = "abc\nabc"; cout << str << endl; return 0;}调试结果一切都很正常可是有时候我们想输出原始字符串不需要存在什么转义之类的该怎么做比如原创 2022-01-09 23:00:54 · 1238 阅读 · 1 评论 -
C++11 final 标识符
一、finalfinal 是 C++11 新增的一个标识符主要用于在类定义时,可以显式强调不能继承防止我们在使用类的过程中有意或者无意为该类创建子类二、举个栗子1、类继承看以下代码#include <iostream>using namespace std;class A {};class B: public A{};int main(int argc, char ** argv){ return 0;}B 类是 A 类的派生类接着原创 2022-01-08 16:55:44 · 474 阅读 · 0 评论 -
C++11 返回类型后置
一、返回类型后置返回类型后置是什么第一次看着有点懵来点熟悉的int Fun(int a, int b);上面这样这个 Fun 是一个返回值为 int 类型的函数int 是在 Fun 前面那么 返回类型后置 是不是 把 int 放在后面就可以了呢答案是可以这么理解C++11 推出了性特性 返回类型后置举个栗子,返回类型后置 形如这样的auto Fun(int a, int b) ->int{ return a + b;}auto 就作为...原创 2022-01-07 17:09:02 · 1056 阅读 · 0 评论 -
C++11 计算代码执行时间(std::chrono 方式)
一、需求// 在追求代码性能优化的情况下// 我们想知道 fun 函数大概执行了多长时间bool result = fun();二、测试例子#include <iostream>#include <chrono>// 测试函数bool fun(){ int n = 0; while (++n < 20) std::cout << "测试函数 fun" << std::endl; return true.原创 2022-01-06 10:56:05 · 744 阅读 · 0 评论 -
C++11 并发编程之条件变量 std::condition_variable
一、std::condition_variable这玩意儿怎么使用呢有个条件儿它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁当 std::condition_variable 对象调用 wait() 时, 它就使用 std::unique_lock 锁住当前线程直到另外一个线程原创 2022-01-05 11:16:45 · 322 阅读 · 0 评论 -
C++11 constexpr 变量和 constexpr 函数
一、constexpr 变量首先先了解一个概念:常量表达式常量表达式:是值不会改变并且在编译过程就能得到计算结果的表达式所以,换个角度想,字面值是属于常量表达式的那什么是字面值呢?很简单,比如 1, 2,3,4, "123", '1', nullptr 等等所以,一个对象或者表达式是不是常量表达式是由它的数据类型和初始值共同决定的例如:const int A = 20; // A 是常量表达式const int B = A + 1; // B 是常量表达式i原创 2022-01-05 10:39:52 · 453 阅读 · 0 评论 -
C++11 左值引用和右值引用、完美转发和引用折叠
一、左值与右值1、最感性的认识2、当然,左值也是可以在右边的3、左值是可以被修改的,右值不能4、当然取地址也是生存周期一般左值会比右值的长一般右值都计算时产生的无名临时对象,存在时间比较短下面还有一种情况也要区分二、左值引用和右值引用左值引用:可以引用一个对象,有时候也可以绑定一个右值右值引用:只能引用右值1、左值引用int a = 3;int &p1 = a; // 左值引用左值引用右值,将...原创 2022-01-05 10:16:59 · 392 阅读 · 0 评论 -
C++11 auto 和 decltype 的区别
一、auto我们在声明一个变量时,需要预先知道我们要声明的变量是什么类型,但有的变量类型是比较长比较难以书写,或有的时候比较困难推演出表达式的类型,特别是在泛型模板编程中的时候所以 C++11 就引入了 auto 类型说明符,让编译器去分析表达式所属的类型,因为编译器需要推算表达式的类型,所以在使用 auto 的时候,必须要给它一个初始值!不然编译器不知道如何去推算例如int i = 0; // i 为 intauto a = 10; // a 为 intauto b原创 2022-01-05 09:10:47 · 205 阅读 · 0 评论 -
C++11 标准库 bind 函数
一、bind 是什么?bind 顾名思义: 绑定通俗来讲呢,可以这么理解有点像函数指针的意思。资料上是这么讲的:可以将 bind 函数看做一个通用函数的适配器,它接受一个可调用对象,生成一个新的可以调用对象来“适应”原对象参数列表它一般调用形式:其中 newCallable 是一个可调用的对象, arg_list 是以逗号分隔的参数列表这时我们调用 newCallable,newCallable 就会调用 callable, 并用 arg_list 传递参数auto n原创 2022-01-04 16:38:56 · 1071 阅读 · 0 评论 -
C++11 nullptr 和 NULL 使用区别
一、为什么要有 nullptr 出现nullptr 的出现是为了替代 NULL那 NULL 为什么要被替代那肯定 NULL 是有缺陷的有的编译器将 NULL 定义成下面两种方式1、02、((void*)0)在 C++ 中不允许 ( void* ) 隐式的转成其他类型在某些编译器把 NULL 定义成 ((void*)0) 的情况下当你定义变量去赋值NULL时候,NULL就会变定义为 0 。另外,这种问题也会对 C++ 的重载特性造成混乱所以 nullptr 来了原创 2022-01-04 16:24:37 · 263 阅读 · 0 评论 -
C++11 回调函数写法(以相机采集图像为例子)
一、需求分析假设以下两个类,以相机采集图像为例子A类:厂商提供的 SDK 类B类:我们自己写的应用类这时,我们的 B类 如何获取到 A类 的图像呢?一种方式: 使用 A类 的对象一直循环轮询 A的实时图像数据另一种方式,就是我们今天的要讲的主题: 回调函数大致过程如下:接下来,就是设计代码阶段二、完整代码#include <iostream>#include <functional>using namespace st..原创 2022-01-04 15:12:57 · 2038 阅读 · 0 评论