![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
3.2 C++
语言关键知识点
哲学的天空
这个作者很懒,什么都没留下…
展开
-
C++语法学习笔记六十八:STL总述、发展史、组成,数据结构谈
实例代码:#include <iostream>#include <string>//#include <stdlib.h>#include <cstdlib>#include <vector>using namespace std;namespace _nmsp1{ //一:几个概念 //(1)c++标准库: c++ standard Library。只要你装了c++编译器,那么这个c++标准库自动就被安装进来了;vect原创 2020-08-30 10:13:18 · 196 阅读 · 0 评论 -
C++语法学习笔记六十:模板全特化、偏特化(局部特化)
实例代码:// #include <iostream>#include <vector>using namespace std;template<typename T, typename U>struct TC{ //泛化的TC类模板 TC(){ cout << "泛化版本构造函数" << endl; } void functest(){ cout << "泛化版本" << endl;原创 2020-08-29 08:16:21 · 249 阅读 · 0 评论 -
C++语法学习笔记四十八:单例设计模式共享数据分析、解决,call_once
实例代码:// #include <iostream>#include <vector>#include <thread>#include <mutex>using namespace std;class A{public:};std::mutex resource_mutex;std::once_flag g_flag; //这是个系统定义的标记class MyCAS{ //这是一个单例类 static void原创 2020-08-28 22:42:53 · 141 阅读 · 0 评论 -
C++语法学习笔记四十二:并发基本概念及实现,进程、线程基本概念
实例代码:// #include <iostream>#include <vector>#include <map>#include <string>using namespace std;int main(){ //一:并发、进程、线程的基本概念和综述 //并发、线程、进程要求必须掌握; //(1.1) 并发 //两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务; //以往计算机,单核cp原创 2020-08-28 22:42:05 · 139 阅读 · 0 评论 -
C++语法学习笔记四十一:返回unique_ptr、删除器、尺寸、智能指针
实例代码:// #include <iostream>#include <vector>#include <memory>using namespace std;unique_ptr<string> tuniqp(){ //unique_ptr<string> pr(new string("I Love China!")); //return pr; //从函数返回一个局部的unique_ptr对象。 //返回这种局原创 2020-08-28 22:41:53 · 1063 阅读 · 0 评论 -
C++语法学习笔记三十九:shared_ptr使用场景、陷阱、性能分析、使用建议
实例代码// #include <iostream>#include <vector>#include <map>#include <string>#include <memory>using namespace std;shared_ptr<int> create0(int value){ return make_shared<int>(value); //返回一个shared_ptr}voi原创 2020-08-27 10:06:34 · 478 阅读 · 0 评论 -
C++语法学习笔记三十七:shared_ptr常用操作、计数、自定义删除器等等
实例代码:// #include <iostream>#include <vector>#include <map>#include <string>#include <memory>using namespace std;void myfunc(shared_ptr<int> ptmp){ return;}shared_ptr<int> myfunc1(shared_ptr<int&原创 2020-08-27 10:06:18 · 280 阅读 · 0 评论 -
C++语法学习笔记三十四: 萃取(traits)技术概念、范例
// 萃取(traits)技术概念、范例等#include <iostream>#include <vector>#include <map>#include <unordered_set>#include <functional>#include <algorithm>using namespace std;namespace _nmsp1 { //一、类型萃取概述 (type traits): 泛型编程,在s原创 2020-08-27 10:05:54 · 387 阅读 · 0 评论 -
C++语法学习笔记三十三:可变参数函数、initializer_list、省略号形参
// // 可变参数函数、initializer_list、省略号形参#include <iostream>#include <vector>#include <map>#include <functional>#include <algorithm>#include <ctime>#include <initializer_list>#include <stdarg.h>using n原创 2020-08-27 10:05:45 · 310 阅读 · 0 评论 -
C++语法学习笔记三十二: lambda表达式捕获模式的陷阱分析和展示
// lambda表达式捕获模式的陷阱分析和展示#include <iostream>#include <vector>#include <map>#include <functional>#include <algorithm>#include <ctime>using namespace std;std::vector<std::function<bool(int)>> gv; //原创 2020-08-27 10:04:39 · 373 阅读 · 0 评论 -
C++语法学习笔记三十一: lambda表达式,for_each、find_if简介
// lambda表达式,for_each、find_if简介#include <iostream>#include <vector>#include <map>#include <functional>#include <algorithm>using namespace std;class CT{public: int m_i = 5; void myfuncpt(int x, int y){ auto my.原创 2020-08-25 10:01:37 · 866 阅读 · 1 评论 -
C++语法学习笔记三十: 可调用对象、std function、std bind
#include <iostream>#include <string>#include <vector>#include <functional>using namespace std;void myfunc(int tv){ cout << "myfunc()函数执行了, tv" << tv << endl;}class TC{public: void operator()(int tv){.原创 2020-08-25 10:00:30 · 211 阅读 · 0 评论 -
C++语法学习笔记二十九: 详解decltype含义,decltype主要用途
// 详解decltype含义,decltype主要用途#include <iostream>#include <functional>#include <vector>#include <map>using namespace std;class CT{public: int i; int j;};int testf(){ return 10;}const int &&myfunctest(void).原创 2020-08-25 10:00:20 · 584 阅读 · 0 评论 -
C++语法学习笔记二十八: 理解auto类型推断,auto应用场合
// 理解auto类型推断,auto应用场合#include <iostream>#include <vector>#include <map>using namespace std;template <typename T>void myfunc(T&& tmprv){}void myfunc3(double, int){ cout << "myfunc3() 被调用" << endl;.原创 2020-08-25 10:00:09 · 301 阅读 · 0 评论 -
C++语法学习笔记二十七: 引用折叠,转发、完美转发,forward
// 引用折叠,转发、完美转发,forward#include <iostream>using namespace std;template<typename T>void myfunc(T &&tmprv) { //万能引用 cout << tmprv << endl; return;}void myfunc1(int v1, int v2){ ++v2;// 改变v2值,让其自加1 cout <<原创 2020-08-25 09:59:56 · 265 阅读 · 0 评论 -
C++语法学习笔记二十六: 理解模板类型推断、查看类型推断结果
// 理解模板类型推断、查看类型推断结果#include <iostream>//#include <boost/type_index.hpp>//template<typename T> //T是类型模板参数,所以T是右类型的//void myfunc(T& tmprv){ //tmprv 形参,形参也是有类型的,往往tmprv形参的类型和T类型模板参数的类型不一样// cout << "------------begin-.原创 2020-08-25 09:59:44 · 197 阅读 · 0 评论 -
C++语法学习笔记二十五: 万能引用universal reference
实例代码//万能引用 universal reference#include <iostream>#include <string>#include <vector>using namespace std;void func(const int& a) { // a的类型: const int &}//上面函数改造成模板函数template<typename T>void func1(const T& a原创 2020-08-25 09:59:29 · 330 阅读 · 0 评论 -
C++语法学习笔记二十三:类型转换构造函数-运算符-类成员指针
实例代码:#include <iostream>#include <string>#include <vector>using namespace std;class TestInt { //保存0-100之间的一个数字 //定义一个函数指针类型,代表的函数带一个int 形参,没有返回类型的 //typedef void(*tfpoint)(int); using tfpoint = void(*)(int);public: static v原创 2020-08-25 09:58:52 · 168 阅读 · 0 评论 -
C++语法学习笔记七十五:适配器概念、分类、范例及总结
实例代码:#include <iostream>#include <vector>#include <algorithm>#include <map>#include <list>#include <unordered_set>#include <functional>#include <queue>using namespace std;//namespace _nmsp1{ //一原创 2020-08-31 14:17:56 · 228 阅读 · 0 评论 -
C++语法学习笔记七十四:函数对象回顾、系统函数对象及范例
实例代码:#include <iostream>#include <vector>#include <algorithm>#include <map>#include <list>#include <unordered_set>#include <functional>#include <queue>using namespace std;//namespace _nmsp1{ //原创 2020-08-31 14:17:51 · 201 阅读 · 0 评论 -
C++语法学习笔记七十三:算法概述、内部处理、使用范例
实例代码:#include <iostream>#include <vector>#include <algorithm>#include <map>#include <list>#include <unordered_set>using namespace std;namespace _nmsp1{ //一:算法概述:理解为函数模板(全局函数/全局函数模板); //比如:查找,排序等等;数十甚至上百个算法;原创 2020-08-31 14:17:45 · 255 阅读 · 0 评论 -
C++语法学习笔记七十二:迭代器的概念和分类
实例代码:#include <iostream>#include <queue>#include <forward_list>#include <map>#include <unordered_set>#include <deque>#include <array>#include <set>using namespace std;namespace _nmsp1{ //一:迭代器基本概原创 2020-08-31 14:17:40 · 336 阅读 · 0 评论 -
C++语法学习笔记七十一:分配器概述、使用,工作原理说
实例代码:#include <iostream>#include <queue>#include <forward_list>#include <map>#include <unordered_set>using namespace std;namespace _nmsp1{ //一:分配器概述:和容器紧密关联,一起使用 //每次malloc(),都浪费大量内存。 //确切的说:内存分配器,扮演内存池的角色,通过大量减少原创 2020-08-31 14:17:31 · 444 阅读 · 0 评论 -
C++语法学习笔记七十:容器的说明和简单应用例续
实例代码:#include <iostream>#include <queue>#include <forward_list>#include <map>#include <unordered_set>using namespace std;namespace _nmsp1{ //一:deque和stack:顺序容器 //deque:双端队列dobule-ended queue(双向开口)。相当于动态数组;头部和尾部插入与删除原创 2020-08-30 10:13:31 · 187 阅读 · 0 评论 -
C++语法学习笔记六十九:容器分类,array、vector容器精解
实例代码:#include <iostream>#include <string>//#include <stdlib.h>#include <cstdlib>#include <vector>#include <array>using namespace std;namespace _nmsp1{ //stl的组成部分: //容器,迭代器,算法(函数),分配器(分配内存),其他(适配器,仿函数/函数对象等等原创 2020-08-30 10:13:24 · 213 阅读 · 0 评论 -
C++语法学习笔记六十七:重载全局new、delete,定位new及重载等
实例代码:#include <iostream>#include <vector>#include <ctime>using namespace std;/*void *operator new(size_t size){return malloc(size);}void *operator new[](size_t size) //数组版本{return malloc(size);}void operator delete(void *ph原创 2020-08-30 10:13:07 · 305 阅读 · 1 评论 -
C++语法学习笔记六十六:嵌入式指针概念及范例、内存池改进版
实例代码:#include <iostream>#include <vector>#include <ctime>using namespace std;namespace _nmsp1 //命名空间{ //一:内存池的概念和实现原理概述 //malloc:内存浪费,频繁分配小块内存,则浪费更加显得明显 //“内存池”,要解决什么问题? //(1)减少malloc的次数,减少malloc()调用次数就意味着减少对内存的浪费 //(2)减少mall原创 2020-08-30 10:13:00 · 429 阅读 · 0 评论 -
C++语法学习笔记六十五:内存池概念、代码实现和详细分析
实例代码:#include <iostream>#include <vector>#include <ctime>using namespace std;namespace _nmsp1 //命名空间{ //一:内存池的概念和实现原理概述 //malloc:内存浪费,频繁分配小块内存,则浪费更加显得明显 //“内存池”,要解决什么问题? //(1)减少malloc的次数,减少malloc()调用次数就意味着减少对内存的浪费 //(2)减少mall原创 2020-08-30 10:12:53 · 185 阅读 · 0 评论 -
C++语法学习笔记六十四:new细节探秘,重载类operator new delete
实例代码:#include <iostream>#include <vector>using namespace std;namespace _nmsp1 //命名空间{ //一:new内存分配细节探秘 //我们注意到,一块内存的回收,影响范围很广,远远不是10个字节,而是一大片。 //分配内存这个事,绝不是简单的分配出去4个字节,而是在这4个字节周围,编译器做了很多处理,比如记录分配出去的字节数等等; //分配内存时,为了记录和管理分配出去的内存,额外多分配了原创 2020-08-30 10:12:48 · 214 阅读 · 0 评论 -
C++语法学习笔记六十三:new、delete的进一步认识
实例代码:#include <iostream>#include <vector>using namespace std;namespace _nmsp1 //命名空间{ class A { public: int m_i; //成员变量 A() { } ~A() { } //virtual void func() {} }; void func() { //一:总述与回顾:二章四节,五章二节 //二:从new说原创 2020-08-30 10:12:42 · 172 阅读 · 0 评论 -
C++语法学习笔记六十二:可变参模板续、模板模板参数
实例代码:#include <iostream>#include <vector>#include <algorithm>#include <map>#include <list>#include <unordered_set>#include <functional>#include <queue>using namespace std;//namespace _nmsp1{ //原创 2020-08-30 10:12:36 · 165 阅读 · 0 评论 -
C++语法学习笔记六十一:可变参模板
实例代码:#include <iostream>#include <vector>#include <algorithm>#include <map>#include <list>#include <unordered_set>#include <functional>#include <queue>using namespace std;//namespace _nmsp1{ //原创 2020-08-30 10:12:30 · 166 阅读 · 0 评论 -
C++语法学习笔记五十九:using定义模板别名,显式指定模板参数
实例代码:// #include <iostream>#include <vector>#include <map>using namespace std;//C++ 98template <typename wt>struct map_s{ //定义了一个结构/类,只是结构的成员缺省都是public: typedef std::map <std::string, wt> type; //定义了一个类型, 键, 值};原创 2020-08-29 08:16:06 · 237 阅读 · 0 评论 -
C++语法学习笔记五十八:成员函数模板,显式实例化、声明
实例代码:// #include <iostream>#include <vector>using namespace std;class A{ //普通类public: template <typename T> void myft(T tmpt){ //成员函数模板 cout << tmpt << endl; }};template<typename C> //类的模板参数class B{原创 2020-08-29 08:15:59 · 199 阅读 · 0 评论 -
C++语法学习笔记五十七:typename场合、默认模板参数、趣味写法分析
实例代码:// #include <iostream>#include <vector>using namespace std;//定义类模板template<typename T> //名字为T的模板参数,用来表示myvector这个容器所保存的元素类型。class myvector{public: typedef T* myiterator; //迭代器, vector iterator 类型成员。public: myvector();原创 2020-08-29 08:15:52 · 327 阅读 · 0 评论 -
C++语法学习笔记五十六:类模板概念,类模板定义、使用
实例代码:// #include <iostream>#include <vector>using namespace std;//定义类模板template<typename T> //名字为T的模板参数,用来表示myvector这个容器所保存的元素类型。class myvector{public: typedef T* myiterator; //迭代器, vector iteratorpublic: myvector(); // 构原创 2020-08-29 08:15:46 · 246 阅读 · 0 评论 -
C++语法学习笔记五十五:模板概念,函数模板定义、调用
实例代码:// #include <iostream>#include <vector>using namespace std;int funcadd(int i1, int i2){ int addhe = i1 + i2; return addhe;}double funcadd(double d1, double d2){ double addhe = d1 + d2; return addhe;}//函数模板 (公式/样板)templat原创 2020-08-29 08:15:39 · 182 阅读 · 0 评论 -
C++语法学习笔记五十四:补充知识、线程池浅谈、数量谈、总结
实例代码:// project4.cpp: 定义控制台应用程序的入口点。//#include <iostream>#include <vector>#include <map>#include <string>#include <thread>#include <list>#include <mutex>#include <future>using namespace std;clas原创 2020-08-29 08:15:30 · 127 阅读 · 0 评论 -
C++语法学习笔记五十三:windows临界区、其他各种mutex互斥量
实例代码:// project4.cpp: 定义控制台应用程序的入口点。//#include <iostream>#include <vector>#include <map>#include <string>#include <thread>#include <list>#include <mutex>#include <future>#include <windows.h>原创 2020-08-29 08:15:24 · 187 阅读 · 0 评论 -
C++语法学习笔记五十二:std atomic续谈、std async深入谈
实例代码:// project4.cpp: 定义控制台应用程序的入口点。//#include <iostream>#include <vector>#include <map>#include <string>#include <thread>#include <list>#include <mutex>#include <future>using namespace std;//s原创 2020-08-29 08:15:16 · 209 阅读 · 0 评论