
C++11/14/17
文章平均质量分 88
C++11/14/17
NGC_2070
纸上得来终觉浅,绝知此事要躬行!
展开
-
unique_ptr常用操作、删除器、尺寸[转]
make_unique 函数。转载 2022-10-05 17:42:09 · 426 阅读 · 0 评论 -
shared_ptr使用场景、陷阱、性能分析、使用建议[转]
shared_ptr使用场景、陷阱、性能分析、使用建议转载 2022-10-05 14:04:24 · 174 阅读 · 0 评论 -
weak_ptr概述、weak_ptr常用操作、尺寸[转]
weak_ptr概述、weak_ptr常用操作、尺寸[转]转载 2022-10-05 10:19:36 · 194 阅读 · 0 评论 -
shared_ptr常用操作、计数、自定义删除器 [转]
https://blog.youkuaiyun.com/u012278016/article/details/108187828转载 2022-10-04 19:58:30 · 1821 阅读 · 0 评论 -
对象移动、移动构造函数、移动赋值运算符[转]
对象移动、移动构造函数、移动赋值运算符转载 2022-10-04 11:39:05 · 219 阅读 · 0 评论 -
临时对象深入探讨、解析,提高性能手段[转]
临时对象深入探讨-解析-提高性能手段转载 2022-10-03 17:05:54 · 124 阅读 · 0 评论 -
左值、右值、左值引用、右值引用、move[转]
左值、右值、左值引用、右值引用、move转载 2022-10-02 19:40:19 · 119 阅读 · 0 评论 -
RTTI、dynamic_cast、typeid[转]
RTTI、dynamic_cast、typeid转载 2022-10-02 16:03:09 · 132 阅读 · 0 评论 -
(C++11/14/17学习笔记):std::atomic续、std::async与std::thread对比
目录std::atomic续、std::async与std::thread对比原子操作std::atomic续谈std::async深入谈std::async参数详述 ,async用来创建 一个异步任务std::async和std::thread的区别(重点)std::async不确定性问题的解决总结std::atomic续、std::async与std::thread对比原子操作std::atomic续谈#include <iostream>#原创 2020-12-13 21:47:07 · 469 阅读 · 0 评论 -
(C++11/14/17学习笔记):future其他成员函数、shared_future、atomic
目录future其他成员函数、shared_future、atomicstd::future的其他成员函数,get()函数转移数据std::shared_future 是个类模板 get()函数复制数据原子操作std::atomic原子操作概念引出范例基本的std::atomic用法范例future其他成员函数、shared_future、atomicstd::future的其他成员函数,get()函数转移数据【std::future_status 枚举值 + f..原创 2020-12-13 17:25:43 · 429 阅读 · 0 评论 -
(C++11/14/17学习笔记):async、future、packaged_task、promise
目录async、future、packaged_task、promisestd::async、std::future创建后台任务并返回值std::packaged_task(包装各种可调用对象),配合thread类、future类使用std::promiseasync、future、packaged_task、promisestd::async、std::future创建后台任务并返回值需求:希望线程返回一个结果. std::async是个函数模板,用来启动一个异步任务,原创 2020-12-12 20:56:32 · 296 阅读 · 0 评论 -
(C++11/14/17学习笔记):condition_variable、wait、notify_one、notify_all
...原创 2020-12-11 01:02:51 · 474 阅读 · 0 评论 -
(C++11/14/17学习笔记):单例设计模式共享数据分析,call_once()函数
目录单例设计模式共享数据分析、解决,call_once设计模式大概谈单例设计模式单例设计模式共享数据问题分析、解决std::call_once()单例设计模式共享数据分析、解决,call_once设计模式大概谈"设计模式":代码的一些写法(这些写法跟常规写法还不怎么一样),程序灵活,维护起来可能方便,但是别人接管、阅读代码都很痛苦。 用“设计模式”理念写出来的代码很晦涩的。 老外应付特别大的项目的时候,把项目的开发经验、模块划分经验,总结整理成设计模式(现有开发需求原创 2020-12-09 20:29:58 · 251 阅读 · 0 评论 -
(C++11/14/17学习笔记):unique_lock
目录unique_lockunique_lock取代lock_guardunique_lock的第二个参数std::adopt_lockstd::try_to_lockstd::defer_lockunique_lock的成员函数lock()加锁unlock() 解锁try_lock()release()unique_lock()函数使用小结unique_lock所有权的传递unique_lockunique_lock取代lock_gua...原创 2020-12-09 03:03:59 · 328 阅读 · 0 评论 -
(C++11/14/17学习笔记):互斥量概念、用法、死锁演示及解决详解
目录互斥量概念、用法、死锁演示及解决详解互斥量(mutex)的基本概念互斥量的用法lock(), unlock()std:lock_guard类模板死锁死锁演示死锁的一般解决方案std::lock()函数模板std::lock_guard的std::adopt_lock参数互斥量概念、用法、死锁演示及解决详解互斥量(mutex)的基本概念保护共享大数据,操作时,某个线程 用代码把共享数据锁住、操作数据、解锁,其他想操作共享数据的线程必须等待解锁,锁定原创 2020-12-09 00:01:04 · 371 阅读 · 0 评论 -
(C++11/14/17学习笔记):创建多个线程、数据共享问题分析及案例
目录创建多个线程、数据共享问题分析、案例代码创建和等待多个线程数据共享问题分析只读的数据有读有写共享数据的保护案例代码创建多个线程、数据共享问题分析、案例代码创建和等待多个线程【引例】#include <iostream>#include <string>#include <thread>#include <vector>using namespace std;void myprint(int va原创 2020-12-08 20:58:53 · 285 阅读 · 0 评论 -
(C++11/14/17学习笔记):线程传参详解,detach()陷阱,成员函数做线程函数
线程传参详解,detach()陷阱,成员函数做线程函数传递临时对象作为线程参数【引例】#include <iostream>#include <string>#include <thread>using namespace std;void myprint(const int& i, char* pmybuf ) { cout << i << endl; cout << pmybu...原创 2020-12-08 19:02:09 · 738 阅读 · 0 评论 -
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
目录线程启动、结束,创建线程多法、join,detach范例演示线程运行的开始和结束threadjoin()detach()joinable()其他创建线程的手法用类对象(可调用对象),以及一个问题范例用lambda表达式线程启动、结束,创建线程多法、join,detach范例演示线程运行的开始和结束程序运行起来,生成一个进程,该进程所属的主线程开始自动运行。主线程从main函数开始执行,那么我们自己创建的线程, 也需要从一个函数开始运行(初始函数原创 2020-12-08 05:09:27 · 506 阅读 · 0 评论 -
(C++11/14/17学习笔记):并发基本概念及实现,进程、线程基本概念
目录并发基本概念及实现,进程、线程基本概念并发、进程、线程的基本概念和综述并发可执行程序进程线程总结线程并发的实现方法多进程并发多线程并发总结C++11新标准线程库并发基本概念及实现,进程、线程基本概念并发、进程、线程的基本概念和综述并发两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务。 以往计算机,单核cpu(中央处理器)—— 某一个时刻只能执行一个任务:由操作系统调度,每秒钟进行多次所谓的“任务切换”原创 2020-12-08 02:59:51 · 362 阅读 · 0 评论 -
(C++11/14/17学习笔记):lambda表达式的使用
目录用法介绍捕获列表 []lambda表达式延迟调用易出错细节分析lambda表达式中的mutable (易变的)lambda表达式的类型及存储lambda表达式再演示和优点总结用法介绍lambda表达式是一种可调用对象。 它定义了一个函数,并且可以捕获一定范围内的变量。auto f = [](int a)->int { return a+1};cout << f(1) << endl; //输出 2特点: 是.原创 2020-12-08 01:22:57 · 431 阅读 · 0 评论 -
C++17 新特性总结 [转]
原文:《他来了,他来了,C++17新特性精华都在这了》 作者:程序喵大人目录构造函数模板推导结构化绑定if-switch语句初始化内联变量折叠表达式constexpr lambda表达式namespace嵌套__has_include预处理表达式在lambda表达式用*this捕获对象副本新增Attribute字符串转换std::variantstd::optionalstd::anystd::applystd::make_from_t..转载 2020-12-02 02:17:57 · 1133 阅读 · 0 评论 -
C++14 新特性总结 [转]
原文:《C++14新特性的所有知识点全在这儿啦!》 作者:程序喵大人目录函数返回值类型推导lambda参数auto变量模板别名模板constexpr的限制[[deprecated]]标记二进制字面量与整形字面量分隔符std::make_uniquestd::shared_timed_mutex与std::shared_lockstd::integer_sequencestd::exchangestd::quoted函数返回值类型推导C...转载 2020-12-02 01:20:38 · 715 阅读 · 0 评论 -
C++11 新特性总结 [转]
原文:《c++11新特性,所有知识点都在这了!》 作者:程序喵大人目录auto & decltype左值右值列表初始化std::function & std::bind & lambda表达式模板的改进并发智能指针基于范围的for循环委托构造函数继承构造函数nullptrfinal & overridedefaultdeleteexplicitconstconstexprenum class非..转载 2020-12-01 23:43:29 · 449 阅读 · 0 评论 -
C++11/14之重载全局operator new和operator delete函数
索引重载全局operator new和operator delete函数,operator new[]和operator delete[]函数定位new(placement new)格式:new (地址) 类类型(参数)定位new操作符的重载多种版本的operator new重载重载全局operator new和operator delete函数,operator new[]和operator ...原创 2020-04-22 20:04:28 · 1232 阅读 · 0 评论 -
C++11/14之内存池改进版
索引一:嵌入式指针(embedded pointer)嵌入式指针概念二:内存池代码的改进定义为宏,进行应用一:嵌入式指针(embedded pointer)嵌入式指针概念一般应用在内存池相关的代码中; 成功使用嵌入式指针有个前提条件:(类A对象的sizeof必须不小于4字节)嵌入式指针工作原理:借用A对象所占用的内存空间中的前4个字节,这4个字节用来 链住这些空闲的内存块;但是,...原创 2020-04-21 21:35:31 · 919 阅读 · 0 评论 -
C++11/14之new细节探秘,重载类operator new delete
索引new细节探秘,重载类operator new deletenew内存分配细节探秘重载类中的operator new和operator delete操作符重载类中的operator new[]和operator delete[]操作符new细节探秘,重载类operator new deletenew内存分配细节探秘我们注意到,一块内存的回收,影响范围很广,远远不是10个字节,而是一大片...原创 2020-04-21 00:04:39 · 510 阅读 · 0 评论 -
C++11/14 new与delete
new类对象时加不加括号的差别1.如果是个空类,那么如下两种写法没有区别,现实中,你不可能光写一个空类2.类A中有成员变量则: 带括号的初始化会把一些和成员变量有关的内存清0,但不是整个对象的内存全部清0;3.当类A有构造函数 ,下面两种写法得到的结果一样了;4.不同的看上去的感觉A *pa = new A(); //没构造函数,则清零;有构造函数,则像构造函数接管了一样。 ...原创 2020-04-20 19:00:40 · 724 阅读 · 0 评论 -
C++11/14之内存池
内存池的概念和实现原理概述malloc:内存浪费,频繁分配小块内存,则浪费更加显得明显 “内存池”,要解决什么问题?(1)减少malloc的次数,减少malloc()调用次数就意味着减少对内存的浪费(2)减少malloc的调用次数,是否能够提高程序运行效率? 会有一些速度和效率上的提升,但是提升不明显;“内存池的实现原理”:用malloc申请一大块内存,当你要分配的时候,我从这一大块内...原创 2020-04-19 20:38:51 · 1173 阅读 · 0 评论 -
C++ 11/14之可变参类模板与模板模板参数
索引可变参类模板通过递归组合方式展开参数包组合关系展开参数包案例通过tuple和递归调用展开参数包通过tuple和递归调用展开参数包案例总结模板 模板参数可变参类模板通过递归组合方式展开参数包组合关系(复合关系):class B{public: //...}class A{public: //... B b, //A中包含B对象}组合关系展开参...原创 2020-04-15 20:47:29 · 391 阅读 · 0 评论 -
C++11/14之可变参模板
目录可变参模板可变参函数模板参数包展开:一般用递归函数展开参数可变参类模板通过递归继承方式展开参数包dumpbin /all xxx.obj > xxx.txt可变参模板Variadic template允许模板中有0到任意个模板参数可变参函数模板template<typename... T>void myfunc(T... argvs){ cout ...原创 2020-04-13 23:03:43 · 321 阅读 · 0 评论 -
C++11/14之模板全特化,偏特化
目录模板全特化,偏特化类模板特化类模板全特化a)常规全特化b)特化成员函数而不是模板类模板偏特化(局部特化)a)模板参数数量b)模板参数范围:int , const int(比int小)函数模板特化函数模板全特化函数模板偏特化模板特化版本放置位置建议模板全特化,偏特化对特殊的类型(类型模板参数)进行特殊对待,给它写适合它的类型的专用代码。类模板特化类模板全特化a)常规全特化必须先有...原创 2020-04-13 00:44:44 · 2181 阅读 · 0 评论 -
C++11/14之using定义模板别名,显式指定模板参数
目录using定义模板别名显式指定模板参数using定义模板别名using定义模板别名using : 一般用来给类型定义别名typedf unsigned int uint_t; //相当于给unsigned int 定义了一个别名uint_ttypedef std::map<std::string, int> map_s_i;map_s_i m_val;m_...原创 2020-04-12 20:05:19 · 2134 阅读 · 0 评论 -
C++11/14之成员函数模板,显式实例化、声明
1.普通类的成员函数模板不管是普通类还是模板类,成员函数都可以是函数模板,称为“成员函数模板”,但不可以是虚函数,否则编译器报错。2.类模板的模板参数必须用<>指定,成员函数模板(函数模板)的模板参数可以自动推导。3.类模板的成员函数(普通成员函数/函数模板)只有为程序所用时(代码对函数或函数模板进行调用时)才实例化。 如果某函数从未使用,则不会实例化该函数。 //普...原创 2020-04-12 12:09:30 · 4265 阅读 · 0 评论 -
C++11/14之STL迭代器用法及概述
STL迭代器迭代器基本概念迭代器是一个可遍历STL容器全部或部分元素的对象(行为类似于指针的对象)迭代器是用来表现容器中某一位置迭代器紧密依赖于容器,容器里定义者迭代器具体类型细节。迭代器和容器紧密相关(绑定到一起的)。迭代器分类分类依据:迭代器的移动特性以及在这个迭代器上能做的操作迭代器,行为如指针,到处跳,表示一个位置,一般分类是依据它的跳跃能力,每个分类是对应一个stru...原创 2020-04-11 13:24:10 · 651 阅读 · 0 评论 -
C++11/14之萃取(traits)技术
萃取(traits)技术参考网页https://en.cppreference.com/w/cpp/types类型萃取案例C++11提供很多类型萃取接口,这些接口其实是一些类模板。通过萃取接口中的value值为true,false获取信息。#include "pch.h"#include <iostream>#include <vector>#inclu...原创 2020-04-10 23:24:13 · 758 阅读 · 0 评论