
C++ 11
文章平均质量分 77
恋恋西风
专业图像处理,CT三维可视化,三维重建,CT后处理,软件开发, 熟悉OpenSSL、VTK、ITK 等第三方库;熟悉C/C++、java、C#,Python。 专注于手术导航系统开发。
展开
-
C++11 仿函数(functor) std::function std::bind
std::function是函数模板类(是一个类)。头文件 #include 是一个函数对象的包装器,函数。lamada表达式。绑定表达式或其他函数对象。指向成员函数和指向数据成员的指针。原创 2023-02-14 20:33:09 · 1465 阅读 · 0 评论 -
C++11 lambda
Lambda 函数也叫匿名函数, 是C++ 11中新增的特性;原创 2023-02-14 20:34:22 · 600 阅读 · 0 评论 -
C++11新标准 特性 整理
指定一个简单的别名,避免了书写过长的类型名称实现一种定长的类型,在跨平台编程的时候尤其重要使用一种方便阅读的单词来作为别名,方便阅读代码1.1 结构体char* name;int age;} Person;1.2 指针1.3 定义数组定义了一个 的函数指针,这个函数返回值是int类型,包含两个参数(int,int)在typdef可以定义更加复杂的类型,这种情况遇到的不是很多,有时候多层的嵌套会将代码演变的异常复杂,可读性变差;using 别名 = xxx(类型);原创 2023-02-06 22:30:00 · 382 阅读 · 1 评论 -
C++11 线程池(threadpool)
1 线程池是什么?在多任务并发执行的时候往往需要开启很多线程来执行。而一个线程的创建和销毁是需要消耗一部分计算机资源的,而如果一个线程执行任务的资源消耗和创建一个线程的消耗差不多的情况下,那简直太浪费资源了。所以如果有已经创建好的一堆线程等着执行任务,有任务来了,调用一个线程去执行就可以了,不用重新创建一个线程。这样可以省去很多资源消耗。而线程池就是创建了若干个等待执行任务的线程的容器。线程池就是一个线程的容器,线程池负责容纳,管理,甚至调度线程的执行和任务的分配(其中线程的调度和任务的分配不一定是原创 2020-12-21 11:13:21 · 3597 阅读 · 0 评论 -
C++11 智能指针 (整理)
RAII技术 智能指针 什么是智能指针? 智能指针的作用 智能指针的使用 shared_ptr unique_ptr weak_ptr 智能指针的实现 RAII技术RAII技术即资源分配及初始化,使用类来封装资源的分配和初始化,再构造函数完成资源的分配和初始化,析构函数完成资源的清理,可以保证正确的初始化和资源释放智能指针什么是智能指针?智能指针是借用RAII技术对普通指针进行封装,实质是一个对象,表现为一个指针,即智能的...原创 2020-10-19 14:50:59 · 166 阅读 · 0 评论 -
c++11多线程编程 整理(五) 原子量 atomic
https://baptiste-wicht.com/categories/c%2B%2B11-concurrency-tutorial.htmlhttps://baptiste-wicht.com/posts/2012/07/c11-concurrency-tutorial-part-4-atomic-type.html上面可以先看一下;概述在多线程模式下为了保证线程安全,我们通常做法是给共享资源加互斥锁,在一段时间只能有一个线程访问并操作共享资源,其他线程都会阻塞,这样就在一些对性能要求原创 2020-10-11 21:35:04 · 618 阅读 · 0 评论 -
c++11多线程编程 整理(四) 锁的进阶与条件变量
原文:C++11 Concurrency Tutorial – Part 3: Advanced locking and condition variables上一篇文章中我们学习了如何使用互斥量来解决一些线程同步问题。这一讲我们将进一步讨论互斥量的话题,并向大家介绍 C++11 并发库中的另一种同步机制 —— 条件变量。递归锁考虑下面这个简单类:struct Complex { std::mutex mutex; int i; Comple...原创 2020-10-11 21:15:41 · 396 阅读 · 0 评论 -
c++11多线程编程 整理(三) 共享数据同步和互斥
上一篇文章我们讲到如何启动一些线程去并发地执行某些操作,虽然那些在线程里执行的代码都是独立的,但通常情况下,你都会在这些线程之间使用到共享数据。一旦你这么做了,就面临着一个新的问题 —— 同步。 下面让我们用示例来阐释“同步”是个什么问题。同步问题 我们就拿一个简单的计数器作为示例吧。这个计数器是一个结构体,他拥有一个计数变量,以及增加或减少计数的函数,看起来像这个样子: [译注:原文 Counter 的 value 并未初始化,其初始值随机,读者可自行初始化为 0 ]...原创 2020-10-11 19:57:58 · 623 阅读 · 0 评论 -
c++11多线程编程 整理(二) thread 初探
C++11 引入了一个新的线程库,包含了用于启动、管理线程的诸多工具,与此同时,该库还提供了包括互斥量、锁、原子量等在内的同步机制。在这个系列的教程中,我将尝试向大家展示这个新库提供的大部分特性。 为了能够编译本文的示例代码,你需要有一个支持 C++11 的编译器,笔者使用的是 GCC4.6.1(你需要添加 "-std=c++11" 或 "-std=c++0x" 编译选项以启动 GCC 对 C++11 的支持)[译注:bill 的编译环境为 GCC4.6.3 + codeblocks 10.05 ...原创 2020-10-11 18:52:31 · 648 阅读 · 0 评论 -
c++11多线程编程 整理(一)并发、线程的基本概念与综述
并发两个或更多的任务同时发生,一个程序同时执行多个独立的任务。 单核CPU通过在每秒钟进行快速的“任务切换”制造出并发的假象。这种切换(上下文切换)是有时间开销的,操作系统要保存切换前的各种状态。 多核CPU才具有真正的并行执行多个任务的能力。(硬件并发) 原因:同一时间块内可以执行多个任务,提高性能。线程每个进程都有一个唯一且仅有一个主线程。主线程随着进程的启动而启动。 用来执行代码的,可以视为一条代码的执行通路。 我们可以创建其他的线程(执行通路)。 线程不是越多越好,每个线程原创 2020-10-11 17:28:18 · 233 阅读 · 0 评论 -
C++11 auto 自动推导
1、我们可以使用valatile,pointer(*),reference(&),rvalue reference(&&) 来修饰auto。8、auto不能自动推导成CV-qualifiers(constant & volatile qualifiers),除非被声明为引用类型。auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。6、以为auto是一个占位符,并不是一个他自己的类型,因此不能用于类型转换或其他一些操作,如sizeof和typeid。2、用auto声明的变量必须初始化。原创 2018-12-13 18:43:58 · 592 阅读 · 1 评论 -
c++11 智能指针 之 shared_ptr
shared_ptr不用手动去释放资源,它会智能地在合适的时候去自动释放,这个对于C++内存泄漏和编程效率会有很大的提高;以前我们常为忘记 delete,并且在多线程释放内存时很纠结 ,shared_ptr 可以方便的解决问题,因为它是引用计数和线程安全的。写个简单的demo:#include <iostream>#include <memory>usi...原创 2018-12-13 17:59:42 · 822 阅读 · 0 评论