
c++ STL
文章平均质量分 58
羽生少年
格物致知,知行合一!
展开
-
函数调用过程探究
函数调用过程探究 - 知乎原创 2023-07-17 17:53:44 · 232 阅读 · 0 评论 -
C++显式调用构造函数和析构函数
C++显式调用构造函数和析构函数 - 龙杀点 - 博客园 (cnblogs.com)原创 2022-03-22 15:34:18 · 1191 阅读 · 0 评论 -
让C++对象只能分配到堆/栈和静态区上并判断分配位置
对象分配到堆上的过程:三个形式的new要把对象分配到栈上,需要使用到new operator,而new operator会调用operator new和placement new。operator new用于调用malloc申请堆空间,如果申请失败会抛出bad_alloc异常 placement new用于“定向构造”,即在指定的内存上(这里就是指operator new申请的空间)调用构造函数以构造出新对象根据侯捷先生的书所说,STL(书中的版本)对于某些对象做了统一的分配和统一的构造,而不把原创 2021-12-01 14:00:12 · 942 阅读 · 0 评论 -
1111111111
今日事今日毕,根据客户方要求和规范,有条不紊地安排好自己的任务,重要的事情先做,用专业的态度去对待,根据规范要求提交代码和提交物,持续优化个人工作流程。善于沟通和倾听,并认真参与项目问题的讨论,积极参与分析项目block点,并建言献策,完成自己的任务。当有同事需要帮助时,主动提供;主动发现同事需要帮助的地方并提供帮助。根据当前岗位要求,能在知识和技能上进行学习提升,在个人工作方面有针对性进行学习新的知识点和业务补充,不断提高解决问题的能力,不断迎接新的挑战。面对困难积极主动,能主动学习,寻求挑战原创 2021-11-18 12:42:59 · 101 阅读 · 0 评论 -
linux下使用VS CODE + CMAKE 调试C++程序
Linux下使用VS Code + CMake 调试c++程序 - 灰信网(软件开发博客聚合)原创 2021-11-08 11:09:26 · 573 阅读 · 0 评论 -
google protobuf安装与使用
google protobuf是一个灵活的、高效的用于序列化数据的协议。相比较XML和JSON格式,protobuf更小、更快、更便捷。google protobuf是跨语言的,并且自带了一个编译器(protoc),只需要用它进行编译,可以编译成Java、python、C++、C#、Go等代码,然后就可以直接使用,不需要再写其他代码,自带有解析的代码。更详细的介绍见:Protocol Buffersprotobuf安装1、下载protobuf代码google/protobuf2、安装pr..原创 2021-11-07 19:17:02 · 5881 阅读 · 0 评论 -
string.find()与string::npos
C++: string 中find函数的用法以及string::npos的含义_linwh8的博客-优快云博客_c++ npos查找字符串a是否包含子串b,不是用strA.find(strB) > 0 而是 strA.find(strB) != string:npos其中string:npos是个特殊值,说明查找没有匹配...原创 2021-10-15 10:50:23 · 300 阅读 · 0 评论 -
空指针赋值崩溃
什么是“空指针赋值错误”? - Thinbugvoid crash(){char* p = nullptr;*p = 0;}空指针被赋值会发生崩溃。原创 2021-10-12 16:10:31 · 819 阅读 · 0 评论 -
c++ 和类
什么是类?我理解类是现实世界的描述,是对业务的抽象,类设计的好不好多半取决于你抽象的巧不巧。类的设计最重要的一点是要表示来自某个领域的概念,拿我最近在做的音视频剪辑来举例,剪辑业务中有轨道的概念,也有片段的概念,每个轨道可包含多个片段,这时候就有些问题需要考虑,在现实世界中,轨道可以复制吗?片段可以复制吗?轨道可以移动吗?片段可以移动吗?然后我们就可以进一步将现实世界中的轨道和片段抽象成类了,可分为两个类,一个轨道类,一个片段类,两个类是否需要提供拷贝构造函数和移动构造函数,完全取决于它们在现.转载 2021-08-23 11:22:53 · 475 阅读 · 0 评论 -
C++中string、char *、char[]的转换
C++中string、char *、char[]的转换 头段时间有人问过我这个问题,可是我一点头绪都没有,直接说不会。现在从网上找了点资料,看了看,知道点东西了。 一、string转char*。 主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy(); 1.data()方法,如:1 string str = "hello";2 const char* p = str.data();//加const 或者用char * p=(c原创 2021-08-05 15:01:32 · 3523 阅读 · 0 评论 -
STL容器的线程安全
STL容器是线程不安全的。线程安全的情况 多个读取者是安全的。多线程可能同时读取一个容器的内容,这将正确地执行。当然,在读取时不能 有任何写入者操作这个容器。 对不同容器的多个写入者是安全的。多线程可以同时写不同的容器。 线程不安全的情况 在对同一个容器进行多线程的读写、写操作时。 在每次调用容器的成员函数期间都要锁定该容器。 在每个容器返回的迭代器(例如通过调用begin或end)的生存期之内都要锁定该容器。 在每个在容器上调用的算法执行转载 2021-07-15 14:55:48 · 2823 阅读 · 0 评论 -
C++类的静态成员详解
类的静态成员分为静态数据成员和静态成员函数 静态数据成员 假如我们要设计一个战争游戏,游戏中有许多的兵种。游戏的过程中,每隔一段时间每个兵种都会产生,同时由于战争的消耗,每个兵种士兵的数量又会减少。为了情节更逼真呐,我们引入了一个士气的概念,当士气比较高的时候,这个兵种的士气战斗力就会很强,士气较低的时候,兵种的战斗力就会比较弱。兵种的士气受很多因素影响,其中一个最直接的因素就是士兵的数量相关,它与数量成正比。我们就需要一组全局变量,每个变量都会记录当前兵种的数量,但是使用全局变量会引入很多的问原创 2021-07-08 21:03:35 · 1349 阅读 · 0 评论 -
c++中lambda表达式用法
初次接触lambda这个关键字,记得还是在python里面,但其实,早在2011年c++11推出来的时候我们c++就有了这个关键字啦。lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读。所谓函数对象,其实就是对operator()进行重载进而产生的一种行为,比如,我们可以在类中,重载函数调用运算符(),此时类对象就可以直接类似函数一样,直接使用()来传递参数,这种行为就叫做函数对象,同样的,它也叫做仿函数。如转载 2021-06-04 17:10:19 · 7822 阅读 · 0 评论 -
c++ namespace和linux namespace
一、c++中的namespace在C++语言中,命名空间使用namespace来声明,并使用{ }来界定命名空间的作用域。命名空间可以是全局的,也可以位于另一命名空间之中;但不能在类和代码块之中。按照是否有名字,可分为有名字的命名空间与无名命名空间。可以多次声明和定义同一命名空间,每次给这一命名空间添加新成员。编译器自动合并这些同名的命名空间。简单示例:二、linux中的namespaces机制:Linux Namespace是Linux提供的一种OS-level virtuali.原创 2021-04-28 14:07:45 · 362 阅读 · 0 评论 -
strtok(), strtok_s() 字符串分割函数
strtok(), strtok_s() 字符串分割函数//strtok()函数原型/*_Check_return_ _CRT_INSECURE_DEPRECATE(strtok_s) _CRTIMP char * __cdecl strtok(_Inout_opt_z_ char * _Str, _In_z_ const char * _Delim);*/当strtok()在参数_Str的字符串中发现参数_Delim中包涵的分割字符时,则会...原创 2021-03-13 18:15:29 · 7272 阅读 · 0 评论 -
C++对象继承中的内存布局
虚函数表对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。首先先通过一个例子来引入虚函数表,假如现在有三个类如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14原创 2020-11-21 21:59:47 · 276 阅读 · 0 评论 -
同一类的不同对象,在调用相同的成员函数时,入口地址是相同的
一般成员函数的第一个参数默认是this(可以不写),this指针指向调用这个函数的对象,所以可以给函数传入不同的参数,输出不同的值,而且互不影响。但是静态成员函数没有this指针。定义的对象,编译器应该是分配了两个内存,内存之间数据是相互不影响的。你可以new出来指针查看变量地址。如果是打印的话,只能重载了或者用多态即同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间,只要不是静态成员函数,互相不会发生关系,也不存在冲突的问题。...原创 2020-10-22 13:47:02 · 2041 阅读 · 0 评论 -
_T
_T是一个宏,作用是让你的程序支持Unicode编码。因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理像中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。他的作用是让你的程序支持Unicode编码,因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理像中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式原创 2020-09-01 11:25:33 · 120 阅读 · 0 评论 -
博客园学习
博客园https://www.cnblogs.com/DswCnblog/category/847018.html原创 2020-06-24 14:35:23 · 153 阅读 · 0 评论 -
C++ 11 创建和使用共享 weak_ptr
1、为什么需要weak_ptr?在正式介绍weak_ptr之前,我们先来回忆一下shared_ptr的一些知识。我们知道shared_ptr是采用引用计数的智能指针,多个shared_ptr实例可以指向同一个动态对象,并维护了一个共享的引用计数器。对于引用计数法实现的计数,总是避免不了循环引用(或环形引用)的问题,shared_ptr也不例外。我们先来看看下面这个例子:#include <iostream>#include <memory>#include &l原创 2020-06-24 14:10:56 · 172 阅读 · 0 评论 -
C++ 11 创建和使用 shared_ptr
shared_ptr的类型是C + +标准库中一个聪明的指针,是为多个拥有者管理内存中对象的生命周期而设计的。在你初始化一个shared_ptr后,你可以复制它,把函数参数的值递给它,并把它分配给其它shared_ptr实例。所有实例指向同一个对象,并共享访问一个“控制块”,即每当一个新的shared_ptr被添加时,递增和递减引用计数,超出范围,则复位。当引用计数到达零时,控制块删除内存资源和自身。下图显示了指向一个内存位置的几个shared_ptr实例。无论什么时候,当内存资源被...原创 2020-06-24 14:09:20 · 1012 阅读 · 0 评论 -
C++ 计数排序
计数排序的原理:(1)首先,找出最大的元素,给“count[ ]”申请“最大元素的下标+1”个单元(因为数组下标是从0开始的,所以要+1);(2)然后,统计每个元素出现的次数,把次数存到“count[ ]”里;(3)最后,通过一个元素出现的次数-1,从而算出正确顺序的位置,再把元素放进去,就有顺序了。 因为不知道范围的大小,所以需要申请内存,如果知道范围的大小,就可以直接声明。...原创 2019-09-02 23:15:18 · 866 阅读 · 0 评论 -
判断字符串中的括号是否匹配——c和c++实现
判断字符串中的括号是否匹配递归实现:先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配……代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>// 在start与end中搜索匹配int fun(char *str, int start, int ...原创 2019-04-14 12:52:30 · 4193 阅读 · 0 评论 -
虚函数表
对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由...原创 2018-07-17 20:51:45 · 212 阅读 · 0 评论 -
STL常用容器大致对比
1.vector vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构造一个初始长度为0的内存空间,且分配的内存空间是以2的倍数动态增长的,在push_back的过程中,若发现分配的内存空间不足,则重新分配一段连续的内存空间,其大小是现在连续空间的2倍,再将原先空...原创 2018-05-28 12:04:22 · 385 阅读 · 0 评论