C++
文章平均质量分 88
Yuleo_
*---------------------*
展开
-
C++多线程编程(4):共享锁与互斥锁
C++多线程学习:共享锁与互斥锁的实现原创 2023-11-19 15:29:40 · 407 阅读 · 0 评论 -
C++多线程编程(3):接收线程处理函数的返回值
C++多线程学习:如何接收线程处理函数的返回值,三种方法: async,packaged_task,promise方法原创 2023-11-19 15:05:59 · 728 阅读 · 0 评论 -
C++多线程编程(2):四种线程管理方法
C++多线程学习记录:四种线程管理方法,get_id,sleep_for,sleep_untile,yield操作详解原创 2023-11-19 15:02:15 · 487 阅读 · 0 评论 -
C++多线程编程(1):线程的创建方式
C++多线程学习:多线程入门,使用thread创建线程函数的多种不同情况解析。原创 2023-11-19 14:58:38 · 282 阅读 · 0 评论 -
c++结构体数组sort排序出错?(关于sort排序comp比较器的严格弱排序性质)
原因:参考cplusplus中对于comp比较规则的解析。严格弱排序:(a=50,b=60) a < b。再来比较这两个对象: (我们可以猜测出来,然后在我创建变量,并且输入进行排序后。即comp必须是一个。如何解决这个问题呢?原创 2022-12-31 09:15:46 · 1977 阅读 · 1 评论 -
C/C++ 单链表的游标实现(完整代码)
不使用任何指针类型,利用游标实现单链表的基本操作,增删改查等各种基本操作原创 2022-12-23 22:12:08 · 285 阅读 · 0 评论 -
C++ allocator设计内存管理器
*char* 类型的内存分配器public :String();} //重新分配内存 public :private ://内存分配器 };s };s2 = s1;return 0;//分配内存 int len = strlen(str);free();free();});return {}原创 2022-12-21 16:54:15 · 559 阅读 · 0 评论 -
C++ allocator内存管理(一)
标准库allocator类定义在头文件memory中,他帮助我们把内存分配和对象的构造分离开来,提供一种类型感知的内存分配的方法。分配之后,p是string* 类型。相当于new string[ 3 ],但是使用alloc分配的内存是未构造的。因此,在使用alloc分配的内存我们需要使用,来完成初始化或者赋值。正确方式:这样我们就可以完成对分配的内存构造成对象,并且进行赋值。注意:我们的,后面的参数为可变参数,表示接受一个,在这里我们指定它接受默认的string的构造函数。原创 2022-12-20 21:16:01 · 497 阅读 · 0 评论 -
C++ STL算法(一)利用STL算法解决很常见的一些子问题
常见的一些子问题,例如《全排序》 《前缀和》《二分查找》《排序去重》等等原创 2022-12-19 17:15:18 · 408 阅读 · 0 评论 -
c++ 正则表达式
C++正则表达式基本语法及一些案例原创 2022-11-14 15:21:43 · 5585 阅读 · 1 评论 -
c++ noexcept与constexpr解析
否则constexpr的作用就相当于没有,它就是一个普通的函数了,不是编译时常量了。使用constexpr:constexpr修饰此变量为一个常量表达式,即a在编译时就已经确定了,因此他是一个编译期常量,可以当作数组的大小。在我们定义数组的时候:给一个变量当作数组的大小是错误的,因为这是一个变量,不是一个常量表达式,数组只接收。constexpr所表示的是它所声明的变量或者函数,都在静态编译时就已经完成。,任意的成员函数中,静态成员函数,构造函数都可以。,且采用初始化列表的方式为各个成员赋值时,必须使用。原创 2022-11-13 20:48:48 · 984 阅读 · 0 评论 -
C++ 模板与泛型详解
/Code }模板形参表使用typename或者class定义都可以,没有任何区别,为了区分类的定义,一般使用typename//对于任意类型的两个对象相加,的函数模板 template < typename T > T sum(T a , T b) {}原创 2022-10-03 20:24:24 · 1713 阅读 · 0 评论 -
C++ 异常处理机制讲解
标准库自带的标准错误:// 所有异常的基类 class Exception {public :};public :return "不能除以0";} };public :return "加法有问题";} };我们通过一个纯虚函数作为错误的基类,不同的类继承自纯虚函数,然后重写其纯虚函数的方法,这样我们就能以不同的捕获来处理不同的错误。。// 抛出异常 throw 666;try {}原创 2022-10-02 16:25:14 · 763 阅读 · 0 评论 -
C++运算符重载的操作详解+示例
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。原创 2022-10-01 21:49:48 · 2094 阅读 · 0 评论 -
C++ STL 关联式容器操作总结
按key(3)插入元素时,若map中没有key(3),则键值对插入map,若key(3)已经存在,则修改key(3)对于的值。map可以直接存取key所对应的value,支持[]操作符,如map[key]=value。如果希望修改一个元素值,必须先删除原有的元素,再插入新的元素。只有当stu存在2这个键时才是正确的取操作,否则会自动插入一个实例,键为2,值为初始化值。的组合形成的元素,即(key,value)对。map支持 []运算符来访问元素,即[]里的是一个关键字,可以类似于数组,原创 2022-09-30 19:27:52 · 231 阅读 · 0 评论 -
C++容器适配器操作总结(代码+示例)
priority_que(优先级队列)是一种容器适配器,经过专门设计,以使其按照某些*严格的弱排序(strict weak ordering)*标准,其第一个元素始终是其中包含的最大元素。严格是说在判断的时候会用"原创 2022-09-29 18:21:59 · 451 阅读 · 0 评论 -
C++STL 顺序容器操作总结(超级详细)
vector,list,deque,array,string,forward_list操作总结原创 2022-09-28 14:36:34 · 1106 阅读 · 5 评论 -
C++ 类中的static成员的使用及单例设计示例
被static修饰的成员变量,成员函数,单例设计模式封装图片资源原创 2022-09-27 18:02:32 · 1509 阅读 · 5 评论 -
C++反汇编 剖析虚函数表的实现原理(下)
反汇编技术,逐步跟踪分析虚函数表的存在原因,实现原理,虚函数表是什么?只要包含虚函数的类就会有一个虚函数表,当这个类是基类时,它的派生类也会有相应的虚函数表。当一个类有多个对象的时候,这些对象共享一个虚函数表。原创 2022-09-26 22:08:55 · 768 阅读 · 6 评论 -
C++及反汇编 剖析多态及虚表(上:多态的实现)
我们把action函数的用作多态的形式,通过调用父类指针来指向他们不同的成员函数,如上所示,我们定义了三个子函数,为了实现每一个动物的speak和run的功能,每一个action函数的形参都是特定化的,如果有1000个动物,他们都具有speak和run,如果不用多态,我们岂不是要写action函数1000次?这简单啊,三个动物类,每个类都有speak和run成员函数,在创建每个类的对象,分别调用不就好了?我们定义了一个动物们的基类:他们都具有speak和run的功能,所以我们把他们放在一个。原创 2022-09-26 14:30:56 · 507 阅读 · 0 评论 -
C++ 顺序表和单链表的二路归并思想(详解+示例代码)
另一种简化的做法:我们注意到两个表肯定会有一个先遍历完,然后再去遍历另一个表,或者就只遍历一个表,我们可以想办法让他们都在一个地方完成,不用再出去完成了。描述:有两个顺序表A和B,他们都是有序递增的,分别含有n和m个元素,并且A表和B表的元素互不相同,设计一个算法。的,如果A表比B表的元素小,则A表上,A表递增;本算法的空间复杂度为O(1),时间复杂度是O(n+m),n和m分别是A表和B表的长度。我们有两个顺序表A和B,他们都是有序递增的,我们想要把这两个顺序表保持原有的递增顺序。原创 2022-09-25 16:03:39 · 1839 阅读 · 4 评论 -
C++反汇编 利用反汇编分析常见C/C++语句的底层实现(硬核)
解释了底层C语言的语句执行情况,在此后,我也会写很多有意义的C++反汇编的代码,帮助大家理解C/C++的底层含义。原创 2022-09-25 12:34:19 · 4959 阅读 · 5 评论 -
C++ STL:function包装函数详解
语法:function包装函数,包装普通函数,lambda表达式,仿函数,成员函数原创 2022-09-24 15:14:22 · 1983 阅读 · 5 评论 -
C++ STL新特性:not1 not2 mem_fun mem_fun_ref mem_fn等函数(详解+示例代码)
解析: mem_fun函数标准库原型:就是一个函数对象(仿函数),在重载的括号运算符里,使用了指针进行访问,因此在使用在个函数时,需要传递对象的指针。进入到mem_fun_ref的标准库原型:可以看到它也是一个仿函数,重载的括号运算符是按照。mem_fun_ref:与mem_fun类似,只不过它是按照对象的。的形式传入到func1函数中,以此来调用绑定的函数。mem_fun函数:把成员函数转换为函数对象,使用。进行绑定的,即在调用此函数时,不用取地址符号,传递的,其他的基本和mem_fun类似。原创 2022-09-23 23:25:55 · 1637 阅读 · 2 评论 -
C++ STL初识:bind封装函数讲解
bind用来绑定函数调用的某些参数,可以将bind函数看作一个通用的函数包装器,它接受一个可调用对象,并返回函数对象。返回的函数对象参数从前往后,可以依次编号,从1开始;然后可以把传入的参数对原来的参数进行绑定。原创 2022-09-23 17:45:28 · 1462 阅读 · 3 评论 -
C++ STL初识(详解+示例代码):仿函数
仿函数又称为函数对象是一个能行使函数功能的类,仿函数是定义了一个含有operator()成员函数的对象,可以视为一个一般的函数,只不过这个函数功能是在一个类中的运算符operator()中实现,是一个函数对象,它将函数作为参数传递的方式来使用。写一个简单类,除了维护类的基本成员函数外,只需要重载 operator() 运算符。这样既可以免去对一些公共变量的维护,也可以使重复使用的代码独立出来,以便下次复用。STL 中也大量涉及到仿函数。原创 2022-09-22 22:45:43 · 787 阅读 · 1 评论 -
C++ STL容器初识:迭代器
迭代器(iterator)是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。iterator模式定义如下:提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。(实际上是封装了指针的类中类)迭代器的设计思维-STL的关键所在,STL的中心思想在于将容器(container)和算法(algorithms)分开,彼此独立设计,最后再一贴胶着剂将他们撮合在一起。原创 2022-09-20 21:29:30 · 545 阅读 · 2 评论 -
C++多态与虚函数的实现
必须在同一个类中进行(作用域相同)子类无法重载父类的函数,父类同名函数将被名称覆盖重载是在编译期间根据参数类型和个数决定函数调用发生于父类和子类之间,如果子类写了个和父类函数原型一样的函数,并且父类中的函数没有声明为虚函数,则子类会直接覆盖掉父类的函数通过父类指针或引用执行子类对象时,会调用父类的函数MSVC独有的关键字,申明类为抽象类};Animal a;//error C3622: “Animal”: 声明为“abstract”的类不能被实例化 return 0;}原创 2022-09-14 23:15:19 · 433 阅读 · 0 评论 -
C++常见算法大全(自用)
集合算法主要是集合上的一些运算,例如集合加法:并集,集合的减法:差集,还有交集。stable_partition: 范围排序,保存原容器顺序。partial_sort_copy:范围排序外加复制操作。next_permutation:下一个排序序列的组合。prev_permutation:上一个排序序列的组合。stable_sort: 排序,保存原容器数据顺序。remove_copy_if:条件删除拷贝到新容器。replace_copy_if:条件替换,结果另存。......原创 2022-08-27 20:15:09 · 6141 阅读 · 2 评论 -
C++类的拷贝销毁与赋值(上)
在函数后面加上=delete指明我们希望让他们被删除。class A {public ://合成默认构造函数 A(const A & a) = delete;//删除拷贝 ~ A() = default;//合成的析构函数 A & operator =(const A & a) = delete;//删除赋值 private :int p;};它是已删除的函数。ps:可以对任何函数指定 =delete;但是只能对默认构造函数和拷贝控制操作指定 =default。......原创 2022-08-18 12:54:00 · 631 阅读 · 1 评论 -
C++文本查询程序(智能指针)
我们需要在TextQuery类中读取数据,在TextResult类中打印数据。,如果一个单词在一行出现多次,则只记录一次,行会按照升序输出。在一个指定的文件中查询单词,查询结果是单词在。原创 2022-08-17 10:32:08 · 688 阅读 · 1 评论 -
动态内存与智能指针
将一个weak_ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数,**一旦最后一个指向对象的shared_ptr被释放,对象就会被释放。构建智能指针shared_ptr时,要使用make_shared来创建,因此分配的对象就能直接与shared_ptr绑定,避免了无意间将一块内存绑定到多个独立创建的shared_ptr之上。临时的shared_ptr传递给函数的情况: 当这个临时的shared_ptr在函数内执行完毕后,被销毁,计数器递减,为0,会释放其所指向的内存空间;...原创 2022-08-16 20:56:35 · 1002 阅读 · 0 评论 -
C++关联容器操作详解
使用一个关键字类型和值类型来定义map,只需一个关键字来定义set。默认构造函数:创建一个空容器。初始化同类型的拷贝。使用值范围来初始化关联容器。也可以进行值初始化,列表初始化。原创 2022-08-15 16:08:29 · 1070 阅读 · 2 评论 -
C++迭代器与泛型算法(下)
3:remove()删除元素,reverse()反转元素顺序,sort()排序,unique()删除相同元素。ostream_iterator指定迭代器将要输出的内容,因此要输出的类型必须定义了。istream_iterator指定迭代器将要读的内容,因此要读取的类型必须定义了。 关系运算符,递增运算符,解引用运算(只出现在赋值运算符的右侧),箭头运算符。front_inserter:使用push_front的迭代器,头插,反向。inserter迭代器的返回值仍为指向其本身的迭代器,与下面的代码相同。..原创 2022-08-14 15:05:55 · 397 阅读 · 0 评论 -
C++ 泛型算法详解(上)
C++泛型算法,特殊迭代器,lamdba表达式,bind原创 2022-08-12 22:01:12 · 582 阅读 · 0 评论 -
C++顺序容器的操作及总结
vector deque list forward_list array string等顺序容器的操作总结,归纳,增删查改,遍历及示例代码原创 2022-08-08 17:05:34 · 458 阅读 · 0 评论 -
C++IO库的基本操作
成员函数open和close:open打开文件,失败返回failbit状态,要进行open的检查操作,close关闭文件**,操作完一个文件后一定要关闭**对要求使用基类对象的地方,可以用继承类型的对象来调用,例如在istream&的地方传递ifstream;:检测是否触发(置位)failbit或者badbit,如果触发,则返回true。eofbit:表示流到达文件或读取的末尾;:检测是否触发(置位)badbit,如果触发,则返回true。:检测是否触发(置位)eofbit,如果触发,则返回true。...原创 2022-08-04 18:22:37 · 504 阅读 · 0 评论 -
C++新的类型说明符
const constexpt typedef using auto decltype的基础使用方法原创 2022-07-29 20:07:52 · 332 阅读 · 0 评论 -
C++新增的操作 数组 向量 字符串
基于范围的for语句 使用auto来自动创建迭代器访问二维数组原创 2022-07-30 17:17:44 · 189 阅读 · 0 评论 -
C++类与对象初识
C++primer第七章的练习, 开始学习类,定义抽象数据类型,用户自定义类,构造函数,成员函数,类类型原创 2022-08-02 23:00:31 · 150 阅读 · 0 评论