自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 C++ 类外访问类的私有成员变量

C++ 类外访问类的私有成员变量之前一直不太清楚对象的成员变量和成员函数在内存中的占用情况,今天想要直接通过一个对象的变量名去访问其内部的成员变量,特地去看了一下对象中的内存布局。直接说结论:对于没有继承的情况,对象所占内存的大小和C结构体类似,仅需考虑内存对齐+每个基本成员变量的内存大小就计算出对象所占内存。对于有继承的情况,如果有虚函数,那么除了基本的成员变量外还会存储一个虚表指针,这个指针的位置可能在这个对象的内存的头部也可能在尾部,这个视编译器而定。派生类对象的内存大小会是父类大小加上自身

2021-12-25 17:08:08 2473

原创 C++ 命名空间,作用域运算符和using关键字

C++ 命名空间,作用域运算符和using关键字个人理解,极其主观,仅供参考!C++ 作用域运算符C++的作用域运算符主要起到区别作用,避免产生二义性,在不同的模块可能有相同的标识符名称,需要用::加以区分。主要用于:命名空间全局变量类(static情况,继承情况)见文章:C++作用域运算符::的用法 (360doc.com)C++ 命名空间使用命名空间实际上也是避免不同的空间内的标识符相同导致二义性,可以通过使用作用域运算符确定此标识符处于什么空间,也可以使用using nam

2021-06-11 10:21:08 389 1

原创 C++11 谈谈shared_ptr

C++11 谈谈shared_ptr(细节)个人用!十分主观!仅供参考!shared_ptr是C++11中加入的一种智能指针(其实并不够智能),其作用就是帮助我们管理在堆中开辟的空间,避免野指针等众多内存管理不当造成的问题。重点:智能指针会自动的给我们释放开辟的内存空间实际上,每种智能指针都是以类模板的方式实现的,shared_ptrshared_ptr使用了引用计数机制,也就是其类内维护了一个计数count。其之所以叫做shared,多个shared_ptr可以共同使用同一块堆内存,一旦多了

2021-06-11 00:46:03 491 1

原创 操作系统 线程并行代码实现

操作系统 线程并行代码实现个人理解,极其主观,仅供参考!关于并发和并行,可以参考文章:多线程是同时执行多个线程的吗。个人理解并发是可以包含并行的概念的。并发:多个线程按照一定的顺序逐个占用CPU,执行任务,顺序由操作系统调度。对于单核处理器而言,其多线程都是并发的。对于多核处理器而言,其用户级线程是并发的。并行:多个线程同时占用CPU多个核心,执行任务(线程数要小于CPU的超线程数)。对于单核处理器而言,其不存在并行现象。对于多核处理器而言,其内核心线程是并行的。**注意:**线程

2021-06-07 10:35:53 380 1

原创 [C++]LeetCode:剑指Offer 46.把数字翻译成字符串

剑指Offer46.把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。/**动态规划题*解题思路:*1.将字符的每一位求出来保存在数组里2.dp[n] = mdp[n-2] + dp[n-1] (当第n个数能与第n-1个数组合成新的数,m=1,否则m=0)*/ int translate

2021-04-24 15:21:23 105

原创 C++腾讯后端实习笔试:旋转单向链表使旋转后字典序最小

旋转单向链表使字典序最小字典序:对于两个序列a,b 若存在一个j使得对于所有的 i < j , 都有 ai= bi,且aj < bj 那么a序列的字典序小于b序列的字典序。如输入5 2 3 4 1 那么输出 1 5 2 3 4因为无论这个数字序列如何排列,其第一个值b1(5,2,3,4) 一定大于a1(1)。同理输入2 2 5 2 2 输出2 2 2 2 5输入2 2 5 2 3 输出2 2 5 2 3输入3 4 5 1 2 输出1 2 3 4 5笔试中给出题目的描述很多很杂

2021-04-19 00:47:28 427 3

原创 C++ 类模板的友元函数的类外实现

类模板的友元函数的类外实现C++学习中看到视频课上的友元函数的类外实现不仅要在类内部声明友元函数是一个模板函数,还要在类外再去声明,并且由于友元函数的参数是一个模板类,还要类外声明模板类。代码如下:template<class T1, class T2>class Person;template<class T1,class T2>void showPerson(Person<T1, T2>& p);template<class T1, clas

2021-04-10 21:30:09 1327 4

原创 C++ 模板类的嵌套

模板类的嵌套使用函数模板,当参数是自定义数据类型(如结构体,类)时,需要通过第三代具体化自定义数据类型来解决问题。那么对于类模板中的成员对象的数据类型也是自定义数据类型呢。实际上,只要类中包括了某个类型的成员或者方法,在实例化对象的时候就要声明数据类型。那么如果类的成员也是模板类呢。就出现了如下的嵌套:template<class T>class Nm{ T a;};template<class T>class Mn{ T find() { T p

2021-04-10 20:26:19 3160

原创 C++ 各种继承关系中的虚函数

#C++ 各种继承关系中的虚函数探幽最近在学习C++,卡在了实现多态的虚函数这里,之后通过阅读博文:C++虚函数表解析和自己的一些实践,有了点初步的理解,如果错误,欢迎指正。首先建立如图所示的继承关系:代码如下:class A{public: virtual void speak() { cout << "this is A"<<endl; }};class B{public: virtual void spea

2021-04-02 13:45:05 520

原创 C语言:重建二叉树

C语言:重建二叉树学习浙大的数据结构课程做的一些练习。通过前序排序找根节点,在中序排序中通过找到的根节点的值确定此根节点的左子树和右子树。递归实现此过程,每次递归都相当于找到一个新的根节点。struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right;};struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder,

2021-03-27 01:30:55 418

原创 日常:第一篇博文

日常:第一篇博文链表实现从一维数组中每次随机选择两个不同下标数组元素的值打印,已经打印的数组序列不再打印。初始化:picNode* initNode(picNode* head, int* a){ a = (int*)malloc(20 * sizeof(int)); for (int i = 0; i < 20; i++) { a[i] = i + 1; } head = malloc(sizeof(picNode)); picNode* markhead = head;

2021-03-22 20:31:00 54

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除