C++
文章平均质量分 55
phil__naiping
抽象能力是程序员必须具备的。
展开
-
排序算法总结-C++实现
排序算法可以大致分为比较类和非比较类。就是排序的方法是通过元素之间的比较得来,还是通过引入其他策略来得到有序数组。比较类分为交换、选择、插入、归并四种。1、交换的思想就是通过比较两个元素之间的大小,满足一个规则就要交换两个元素之间的位置,以达到排序的目的。2、选择的思想就是选择N次,每次选择的元素就是数组剩下元素的最大(小)值。这样没选择一次有序数组就多一个元素。3、插入的思想就是将无序数组逐个插入到有序数组中的过程。原创 2022-10-24 15:18:30 · 1106 阅读 · 0 评论 -
二重指针-char **、int **的作用
二重指针,char**、int**的理解。原创 2022-08-09 10:51:10 · 407 阅读 · 2 评论 -
C++之联合体
一、联合体的定义联合体是一个特殊的类,其关键词是union,联合体的数据任意时刻只有一个值是有状态的,当有新的数据赋值了,会将其他值覆盖掉。声明变量时,变量类型可以时public、private、protected,默认是public。二、联合体的举例union My_union{ int a; int b; double c;}u;三、联合体的特点1、联合体申请的内存空间大小是联合体中占用内存最大的数据大小。例如上述的联合体,sizeof(My_union)的输出是原创 2021-12-24 15:50:48 · 6018 阅读 · 2 评论 -
C++派生类指针强制转换为基类指针,指针内容会发生变化吗?
class Person{public: int a; int b;};class Man:public Person{public: int c;};int main(){ Man man1; cout<<sizeof(man1)<<endl; // 12 Man *Ma = new Man; cout<<sizeof(*Ma)<<endl; // 12 Person *person =原创 2021-09-02 10:01:19 · 838 阅读 · 0 评论 -
C中有、无符号数运算的溢出问题及解决
一、无符号数加法的溢出问题无符号数可以理解为非负数,两个非负数x、y相加会发生溢出问题,C语言中对无符号数的溢出判断通过sum和x或者y进行比较大小(sum=x+y)。如果sum>=x或者y,那么没有发生溢出,否则发生了溢出。为什么sum与x或者y比较大小就可以判断出是否发生溢出了呢?在C中,如果发生了溢出,就将进位舍去,保留剩余部分,那么sum=x+y=x+y-2^ w,w为位数。我们知道x和y都小于2^ w次方,所以y-2^ w<0,在两边同时加上x,就是x+y-2^ w<x原创 2021-08-14 09:03:34 · 6143 阅读 · 0 评论 -
C++ list容器
一、list容器的概述vector容器是动态的数组,可以根据数据的大小动态的申请内存,当有更多的数据要存储,当前容器的空间不足以存储时,vector会另外申请一块更大的内存,将原来的数据拷贝在存的内存区域,新增的数据再存储。相比之下,list容器没有将数据连续的存储在一起,而是将数据链式的存储,是一种物理上非连续的存储结构,数据元素的顺序是通过链表中的指针链接实现的。链表是由一系列的节点组成,节点是由存储数据的数据域和存储节点地址的指针域组成。list的优势是对数据做遍历操作时,进行插入和删除操作,原创 2021-07-31 17:19:02 · 143 阅读 · 0 评论 -
C++ vector容器
一、vector容器的赋值vectorv;方式1:push_backv.push_back(1);方式2:通过拷贝构造函数vectorv2;v2=v1;方式3:通过assign函数vevtorv3;v3.assign(v1.begin(),v1.end());将v1的begin到end区间的元素赋值给v3。二、vector容量和大小函数原型:empty()判断容器是否为空;capacity()得到容器的容量;size()返回容器中元素的个数;resize(int num)函数,指原创 2021-07-31 12:18:17 · 146 阅读 · 0 评论 -
C++Stirng容器的查找、替换、比较、插入、删除、子串
一、查找方法1: find函数,str1.find(str=“要查找的字符或者字符串”,pos=0)pos是查找的其实位置,默认是从位置0开始。方法2:返回字符串str的前n个字符(从位置pos开始)的第一次出现 位置。string str1=“abdabcdefg”;int pos = str1.find(“ab”,pos=0,2);cout<<pos<<endl;上面的输出为0;ab字符串在0出首先出现。方法3:查找字符串最后一次出现的位置strin原创 2021-07-31 11:05:04 · 332 阅读 · 0 评论 -
C++ String字符串初始化方法
一、C++中String容器的概念在C++中string本质上一个类,类中是通过一个char 管理这个字符串,通过char说明元素的地址。也就是说string字符串所有元素是通过一个char的容器来维护的。另外,string封装了很多有用的函数,例如查找find,删除delete。string管理char所分配的内存,因此不用担心复制越界、取值越界的问题。二、string的构造函数string的构造函数可以使用以下四个方法进行。1)创建一个空的字符串string str;2)使用一个字符原创 2021-07-31 10:02:17 · 16580 阅读 · 5 评论 -
浅拷贝、深拷贝构造函数
1、 深浅拷贝是指深拷贝构造函数和浅拷贝构造函数。构造函数总共有三类:无参构造函数、有参数构造函数、拷贝构造函数。2、 当有属性在堆区开辟的,一定要提供拷贝构造函数,防止浅拷贝带来的问题。(堆区需要手动的清除内存,如果没有去除,系统在结束后会去除。但是析构函数在系统结束之前执行,浅拷贝导致析构函数运行错误)1、概念无参构造函数,又称位默认构造函数,默认构造函数的意思是编译器会自动生成,不需要人工的手写。默认构造函数的要求是:函数名与类名相同,没有参数,没有返回值。有参构造函数:有参数传递的构造.原创 2021-04-13 19:34:17 · 732 阅读 · 0 评论