std::weak_ptr weak_ptr源码链接 (与shared_ptr在同个.h文件) 定义于头文件 <memory> template< class T > class weak_ptr; (C++11 起) std::weak_ptr 是一种智能指针,它对被 std::shared_ptr 管理的对象存在非拥有性(“弱”)引用。在访问所引用的对象前必须先转换为 std::shared_p
想法: 1.设链表长度为n,如5,头节点head,则最后一个元素位置为head-1。 错误,发现行不通,此为链表非数组,存储位置不连续 2.设两个指针p,q,让p,q指向head,再让p指向head的下一个,若不为空,则交换pq(45321),接着q指向p,p指向p的下一个,若不为空则交换(43521),继续,直至p指向空,此
什么是prufer序列 就是一个长度为\(n-2\)的序列,与\(n\)个点的有编号无根树形成双射。 在prufer序列中每个点出现其对应无根树度数减一次。 由树构造prufer序列? 每次选择一个编号最小的叶节点,删掉它并在序列中记录下它连接的那个节点,重复\(n-2\)次后只剩两个节点,算法结束。 用
文本绘制 没有更改过字体,是真的扎心 TextOut(); //功能最弱 INT DrawText(); //TextOut的封装 int DrawText( HDC hdc, //处理设备上下文 LPCTSTR lpString, //指向要绘制的字符串的指针 INT NCOUNT, //字符串长度,以字符为单位 LPRECT lpRECT, //指针->画图
身为新入行的萌新,作者在学习汽车网络测试工程时,发现了句柄这个玩意,多方搜索,总结以下内容,错误之处请指正: 1、什么是句柄? 句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量—引自科学百科
C++中,空指针也可以访问成员函数,但是要注意有没有用到this指针。 如果用到this指针,需要加以判断保证代码的健壮性。 #include<iostream> using namespace std; class WLM { public: void A() { cout << "666" << endl; } void B() { if(thi
this指针指向被调用的成员函数所属的对象。 this指针是隐含在每一个非静态成员函数内的一种指针。 this指针不需要定义,直接使用。 this指针的用途: 1.当形参和成员变量同名时,可用this指针来区分(最好在命名时避免)。 2.在类的非静态成员函数中返回对象本身,可使用return *this
/* 双指针算法可以解决像最长不重复子序列一样的问题 思路:先暴力想思路判断check()的条件,再将n^2利用模板优化为n的双指针算法; 总思路模板: for(int i = 1,j = 1;i < n;i++) { while(j < i && check()) { j++;
1.智能指针的作用和定义 智能指针的作用是管理指针所指向的内存的生命周期,能够管理(控制)该内存的共享和释放,避免用户在使用完该内存后忘记释放,造成内存泄漏。 智能指针是普通(生的,即未封装的)指针的封装,在提供普通指针的功能同时,管理指针所指向的内存空间,当智能指针的实例超出其作用
文件的类型:(文件本质上都是二进制存储的,文件通常存储在外存上) 1.文本文件 可以用文本编辑软件查看的文件 本质上是二进制文件 2.二进制文件 保存的内容不是给人阅读的,而是给其他软件使用的 二进制文件不能用文本编辑软件查看,需
指针是什么? 指针就是一个地址地址代表的就是一块内存空间指针变量是什么? 用来存放指针 #include <stdio.h> #include <stdlib.h> main() { int i =5;// 定义一个int 类型的变量i 值 =5 //%#X表示16进制的地址占位符 printf("i的地址 %#X\n",&i
Chapter6 函数 6.1 函数基础 一个函数包括: 返回类型 函数名字 0个或多个形参组成的列表 函数体 函数的调用 通过调用符号来执行函数。调用符号是一对圆括号,它作用于一个表达式,该表达式是函数或者指向函数的指针;圆括号之内是用逗号隔开的实参列表,用这些实参初始化函数的形参。调
插入排序法 1.工作原理(算法思路) 新建一个指针,指针左边的所有元素都是有序的。但是他们的位置并不是最终位置,一个指针从左向右扫描,若指针所在处的元素比左边元素小,则将该元素向前浮动至适当位置,使指针左侧元素仍然保持有序。当指针扫描到整个数组元素的末尾时,数组排序完成。 2.动
一、数组的特征 数组是存放类型相同的对象的容器,这些对象没有名称,只能根据其所在的位置来进行访问。 数组的大小是确定不变的,不能随意增加删除元素。 数组中的元素在内存中是连续的。 数组会最终会退化成指针,指针的地址即为数组的首元素地址。 数组的性能会优于vector, 但操作灵活
本文实例分析了C++中回调函数(CallBack)的用法。分享给大家供大家参考。具体分析如下: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现
//使用指向结构的指针 #include<stdio.h> #define LEN 20 struct name { char first[LEN]; char last[LEN]; }; struct guy{ struct name handle; char favfood[LEN]; char job[LEN]; float income; }; int main(void) { struct guy fellow[2]={ {
说明 看《C++ Primer Plus》时整理的学习笔记,部分内容完全摘抄自《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,张海龙 袁国忠译,人民邮电出版社。只做学习记录用途。 目录说明4.1 数组4.1.1 数组访问4.1.2 数组初始化及赋值4.2 字符串4.2.1 C - 风格字符串的初始化及拼接4.2.2 C
考研C语言 收录数据结构会用到的C语言知识,建议有基础的情况下再学习,针对性学习即可。 往后的学习要多从内存角度去学习计算机的知识 1. 数组 1.1 一维数值数组 具备相同的数据类型 使用过程需要保留原始数据 访问越界会改变内存中的原有变量的值 数值数组在传递时,元素个
const int a = 10; int *p = &a; //会报错,常量地址不能泄露给指针 // 左:int* 右:const int* const在C++中,修饰的常量不能作为左值,在编译过程中所有出现常量的地方都会用初始值替换。 const修饰的量常出现的错误是: 常量不能再作为左值(试图直接修改常量的值) 不能把常量的地址泄露
原文:https://zhuanlan.zhihu.com/p/113513147 腾讯面前端暑期实习还有一道让我有点窒息的题目,当时好像是问我C#内存分块底层?我有点不大懂面试官的意思。所以干脆一起总结一下免得无话可说。 1 Overview 首先开宗明义,C#是一种托管语言,它的垃圾回收机制(GC)是由.net平台负责的,加之C#语
1.常量指针 --const修饰指针(const int * p) 特点:指针的指向可以修改,但是指针指向的值不可以修改 2.指针常量 --const修饰常量(int * const p) 特点:指针的指向不可以修改,但是指针指向的值可以修改 3. const及修饰指针又修饰常量 (const int * const
点击查看代码 void swap1(int *p1,int *p2) { int *temp; temp = p1; p1 = p2; p2 = p_temp; } int main() { int a = 10,b = 20; printf("交换之前:%d,%d\n",a,b); printf("swap1交换a-b之前a和b的地址:%p,%p\n",&a,&b); swa
有关返回对象的说明 有几种返回方式可供选择 1指向对象的引用 2指向对象的const引用 3const对象 使用const引用的作用就是为了提高效率 返回指向非const对象的引用 两种常见的返回非const对象的情形是: 1.重载赋值运算符 2.重载与cout一起使用的<<运算符 指针和对象小结 1.使
前言 感谢 yzh、wjy、lsc、qyb 等一众大奆的大力支持 本人DS就是个傻逼,博客几乎没有任何技术含量,各位想提升自己熟练度的dalao请移步以上任意一位的博客。本文试着讲清楚各种莫队的基本思路,有对各种莫队复杂度的口胡证明,同时会不定期放一些例题。 莫队,是一种优雅的暴力,有着优秀的
汪汪队,共进步!!! 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为