- 博客(93)
- 资源 (15)
- 收藏
- 关注
原创 自定义可拓展Variant参数类型
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、参数对外接口的使用 ParamPtr CCirclePtr = ParamManager::createParam(EParamType::CIRCLE); //工厂函数 ParamPtr xPtr; CCirclePtr->getSubParam(center + "." + ptX,
2021-08-12 00:23:34
498
原创 详解C/C++中volatile关键字
https://blog.csdn.net/weixin_44363885/article/details/92838607
2021-08-11 00:03:11
770
原创 基于多线程并发-原子量实现自旋锁
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、多线#include <atomic>class spinlock_mutex{ std::atomic_flag flag;public: spinlock_mutex() : flag(ATOMIC_FLAG_INIT) {} void lock() { wh
2021-08-10 22:54:24
722
原创 C++17 any类(万能容器)详解
any是一种很特殊的容器,它只能容纳一个元素,但这个元素可以是任意的类型,可以是基本数据类型(int,double,char,float…)也可以是复合数据类型(类、结构体),那它究竟有什么用?目前来说我没发现什么太大的作用,如果看官发现什么有用的作用,分享一下=.=操作演示:#include<iostream>#include<any>#include<vector>#include<set>using namespace std;int ma
2021-08-05 00:26:15
4484
原创 C++STL容器总结
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!1.std::stringcopy-on-write2.map中insert已有的key值会失败,但map[key]=val,无该键值对则创建,有则赋值val更多内容请关注个人博客:https://blog.csdn.net/qq_43148810...
2021-07-26 15:44:44
305
原创 vector与string扩容原理说明
https://blog.csdn.net/yangshiziping/article/details/52550291
2021-07-26 14:17:54
504
原创 C++字符串std::string
https://blog.csdn.net/SavitarYu/article/details/81029676https://blog.csdn.net/qq_38877888/article/details/104010047
2021-07-25 23:24:34
1450
1
转载 深入理解C++中std::string的内存布局
一、深入理解 C++ String 在内存中的布局:二、32位程序下内存探讨对于长度小于等于15个字符的字符串:数据会保存到,Data的总计16个字节中,如果string 是零时变量,整个字符串的数据则位于栈上对于数据大于15个字节的字符串:会在堆上分配一块额外的数据区域,并将所有数据填充到堆中,然后将堆指针 赋值到 Data 的第一个 指针位置 (Data前4个字节)原文链接:https://blog.csdn.net/sols000/article/details/103989637
2021-07-25 23:16:45
3612
1
原创 元组tuple
#include <tuple>template<class _Ty> struct _Tuple_val { constexpr _Tuple_val() : _Val() { // default construct } _Ty _Val; }; template<class... _Types>class tuple;template<>class tuple<>{}; // empty tupletem
2021-07-02 21:47:02
241
转载 c++11 Variadic Templates(...)(可变参数列表)
Variadic Templates(…) //视频:2,15-17示例:void print(){} //结束template<typename T,typename... Types>void print(const T& firstArg,const Types&... args){//sizeof...(args);//求这包东西的大小cout<<firstArg<<endl;print(args..);}//调用过程//p
2021-07-02 20:25:26
530
原创 initialize(initialize_list<T>)
initialize(initialize_list) //视频:4-6#include <initializer_list> //头文件templateclass initializer_list{public:_NODISCARD constexpr const _Elem * begin() const noexcept;_NODISCARD constexpr const _Elem * end() const noexcept;_NODISCARD constexp
2021-07-02 00:54:01
358
原创 using关键字作用小结
1)、using-directives(打开命名空间)using namespace std;using std::cout;using Base::date;(Base为类名)2)、type alias:using value_type = _Ty;using allocator_type = _Alloc;using pointer = typename _Mybase::pointer;using const_pointer = typename _Mybase::const_pointe
2021-07-02 00:31:09
239
转载 C++ 函数重载 指针类型匹配到bool类型
如有错误的地方欢迎指正,谢谢!如题,今天遇到一个很奇怪的问题,简化示例代码如下:#include <iostream>#include <string> class TestClass{public: void TestFunction(const std::string& test_string) { std::cout << "string function!" << std::endl; } void TestFunc
2021-06-15 19:20:29
849
原创 C++11右值、右值引用以及move语义
右值、右值引用、move语义(forward、swap)临时对象(即将销毁),不可取地址,只能出现在 operator= 右侧(标准库中有例外,如string、complex 等)。典型的 rvalue:字面常量(如1、2…等)、匿名对象(临时对象)以及函数的返回值等。另外,也可以通过 std::move 显式地将一个左值转换为右值。右值可以绑定到一个const 的左值引用,不能绑定到非常量左值引用拷贝构造:检测自我复制move构造:has a 的优化左值、右值左值引用、右值引用移动构造和移
2021-03-27 00:22:52
345
转载 C++虚函数和虚函数表原理
虚函数的地址存放于虚函数表之中。运行期多态就是通过虚函数和虚函数表实现的。类的对象内部会有指向类内部的虚表地址的指针。通过这个指针调用虚函数。虚函数的调用会被编译器转换为对虚函数表的访问:ptr->f(); //ptr代表this指针,f是虚函数*(ptr->vptr[1])(ptr);12上述代码中,ptr代表一个this指针,ptr指向的vptr是类内部的虚表指针。这个虚表指针会被放在类的最前方(VS2017),1就是虚函数指针在虚函数表中的索引值。在这个索引值表示的虚表的
2021-03-25 11:42:23
150
转载 Effective C++总结
1、视 C++ 为一个语言联邦(C、Object-Oriented C++、Template C++、STL)2、宁可以编译器替换预处理器(尽量以 const、enum、inline 替换 #define)3、尽可能使用 const4、确定对象被使用前已先被初始化(构造时赋值(copy 构造函数)比 default 构造后赋值(copy assignment)效率高)5、了解 C++ 默默编写并调用哪些函数(编译器暗自为 class 创建 default 构造函数、copy 构造函数、copy as
2021-03-08 21:28:18
430
2
原创 基于多线程并发-STL之多线程进阶-async、future、promise
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、async创建异步线程async模板函数的两个版本源码(已去除这里不关注的部分)enum class launch { async = 0x1, deferred = 0x2 };//返回值为std::future类型,?表省略,template<class _Fty,class
2021-03-03 02:30:53
600
原创 基于多线程并发-STL之线程同步-互斥(mutex)
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!锁的理解:提供了以排他方式防止数据结构被并发修改的方法。一、mutex类mutex类源码class _Mutex_base { // base class for all mutex typespublic: _Mutex_base(int _Flags = 0) noexcept; ~_M
2021-02-26 00:13:04
1134
1
原创 基于多线程并发-STL之thread简介
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!1.创建线程对象1)不代表任何执行线程的对象thread() noexcept;2)fn为可调用对象(函数、仿函数(重载()运算符的类),初始化为"class()")、lame表达式)。args为与之同步的一包参数列表【备注】:类的成员函数作为可调用对象时,第一参数必须是该成员函数的地址,第二参
2021-02-10 21:58:26
3351
转载 StarUML类图与C++类之间的关系
如有错误的地方欢迎指正,谢谢!类之间的关系1.generalization 泛化(继承)2.interface realization 虚基类与实现3.aggregation 聚合 has-a的关系4.composition 组合 整体和个体是一种contains-a的关系,个体无整体无法单独存在5.dependency 依赖 Class2的某个函数的返回值、形参、局部变量或对Class1静态方法的调用 6.directed association 单向关
2021-02-10 21:35:26
672
原创 基于多线程并发-STL之thread构造函数浅析
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、标准库Thread内容(函数内部实现内容已摘去)class thread { // class for observing and managing threadspublic: class id; typedef void *native_handle_type; thread() no
2021-02-09 23:14:05
1791
原创 C++运算符重载总结
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!更多内容请关注个人博客:https://blog.csdn.net/qq_43148810...
2020-10-31 00:22:39
4031
原创 函数返回值
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、定义返回T或const T类型对象treturn t;调用一次拷贝构造return T();返回一个临时对象,创建临时对象调用构造,return不调用T类的拷贝构造。二、定义返回T*类型指针treturn &t;return不调用T类的拷贝构造,只是将T类型的指针拷贝了
2020-10-23 00:53:44
686
原创 智能指针之共享指针shared_ptr、弱指针weak_ptr、独占式指针unique_ptr
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!class MyClass{public: MyClass(int m = 0) :M(m){ std::cout << "构造 " << M << std::endl; } MyClass(MyClass& myC) :M(myC.M){
2020-10-07 16:37:37
3153
1
原创 结构型模式Structural Patterns之桥接模式bridge
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、Messager 类设计的场景:1、由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度, 乃至多个纬度的变化。2、利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度。例如:Messager 类的方法有平台实现{PlaySound,DrawShape,Writ
2020-05-25 22:57:54
239
1
原创 结构型模式Structural Patterns之装饰模式decorator
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、3个具体类继承一个抽象类,单一责任原则各自实现抽象基类中的三个方法。#pragma once#include<iostream>//业务操作class Stream {public: virtual void Read(int number)const = 0; virtu
2020-05-15 01:15:37
174
原创 创建型模式Creational Patterns之工厂模式factory method
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、四个具体类继承一个抽象类,各自实现抽象基类中的split()方法、类内(也可放到类外)工厂类实现创建方法。单一责任原则,各自类各自实现自己的方法(split()、CreateSplitter)。#pragma once#include <iostream>//抽象类class I
2020-05-10 00:57:23
227
原创 创建型模式Creational Patterns之单例模式singleton
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、单线程懒汉版本(static对象)class Singleton{private: Singleton() = default; Singleton(const Singleton...
2020-05-09 22:32:00
288
原创 设计模式之六大原则和GOF分类方法
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。...
2020-03-18 23:38:39
471
原创 C++11新特性:auto和decltype
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、auto作用编程时候常常需要把表达式的值赋给变量,需要在声明变量的时候清楚的知道变量是什么类型。然而做到这一点并非那么容易(特别是模板中),有时候根本做不到。为了解决这个问题,C++11新...
2020-02-12 11:28:26
723
原创 C++之assert()断言(宏)
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、assert()简介断言,是宏,而非函数。assert 宏的原型定义在 < assert.h >(C)和< cassert >(C++)中,其作用是如果它的条件返回...
2020-02-11 17:25:19
1055
原创 C++之friend友元(友元函数和友元类)
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、友元在C++中,类具有封装性和隐蔽性,类的数据成员一般都定义为私有成员,成员函数一般都定义为公有的,以此提供类与外界的通讯接口。但是,某些成员函数频繁调用时,由于函数参数的传递、C++严格...
2020-02-11 16:05:14
1571
原创 C++之多态性
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、概念1、多态性是面向对象程序设计的重要特性之一。2、多态是指同样的消息被不同类型的对象接收时导致完全不同的行为。3、消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了...
2020-02-11 00:20:45
3347
原创 C++之类型兼容
@著作权归作者所有:来自CSDN博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.csdn.net/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!更多内容请关注个人博客:https://blog.csdn.net/qq_43148810...
2020-02-11 00:16:27
2948
Qt类继承关系以及所属模块关系一览表
2023-03-01
C语言知识点思维导图
2020-02-04
C++知识点思维导图
2020-02-04
Connect.rar
2021-12-04
STL知识点思维导图
2018-12-18
STL知识点思维导图
2020-02-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅