- 博客(75)
- 收藏
- 关注
原创 C++学习 STL组件之vector部分总结
自从上一次学习STL的组件(string)已经过去有些日子了,主要是还在进行其他方面的学习,现在有了空闲继续来总结C++STL方面,vectot也是很早之前就学过的部分,学习过程中也是让我深深感到了C++STL的实用,现在在做有关方面的题目时有的地方会忘记(所以总结顺便复习),总之要学习和总结的东西还有很多,就请路过的看客和我一起学习前进吧。-----(≧∇≦)ノ首先是关于vector的介绍经...
2020-04-11 00:25:50 295
原创 C++ 菱形虚拟继承 与 指针偏移问题
首先在谈到菱形虚拟继承之前先说明一下菱形继承:菱形继承是多继承的一种特殊情况(如下,画渣勿喷):图中 B C 两个类都继承了A类,而 B C 又都被 D类继承按照继承的定义,派生类当中都包含了基类,而这时虚拟继承这种情况就会产生问题<a>数据冗余首先是按照虚拟继承的这种方法,D类当中就包含了两份A类数据(分别来自B类和C类)<b>二义性其次是,当我们通过D类去访问A类...
2020-04-02 23:00:11 372
原创 C++ 关键字 explicit 的使用
首先是定义:explicit关键字只能修饰只有一个参数的构造函数,或者有多个参数,但是除第一个参数外其他的参数都有默认值的构造函数。它的作用是表明构造函数是显式方式显示的。(类构造函数默认为隐式)如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的, 所以explicit关键字也就无效了举个例子:class AMD{public: AMD(int level){ //这里的...
2020-03-30 12:02:56 238
原创 C++ sort()排序函数用法
本文转自https://blog.csdn.net/l198738655/article/details/79872738sort(first_pointer,first_pointer+n,cmp)该函数可以给数组,或者链表list、向量排序。实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据你的数据形式和数据量自动选择合适的...
2020-01-12 12:14:56 432
原创 C++ 字符流 stringstream
(转自:https://blog.csdn.net/nwpu_yike/article/details/22100615)一、类型转换——数字->字符串C++ stringstream 类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据互相转换的时候。要想在程序中使用 stringstream 类,我们需要在源程序文件中包含头文件include<sstream>...
2020-01-11 12:13:58 161
原创 C/C++ 超长正整数相加
本题整体思想不难,主要是想好用什么容器去存储计算值和计算结果值,这里用的是字符串,当然也可以用数组,题目链接:https://www.nowcoder.com/practice/5821836e0ec140c1aa29510fd05f45fc?tpId以下为解答代码(具体细节看注释):string AddLongInteger(string addend, string augend){ ...
2019-12-21 16:43:18 621
原创 C++ 二叉搜索树原理及其实现
首先是概念:二叉搜索树又称二叉排序树,它具有以下的性质:若是左子树不为空,则左子树上所有节点的值小于根节点的值若是右子树不为空,则右子树上所有结点的值大于根节点的值二叉搜索树的左右子树也是二叉搜索树二叉搜索树的中序排列是一个有序数列再下来是它的实现首先是构造节点:template<class K>struct BStreeNode{ BStreeNode(c...
2019-12-17 07:58:45 110
原创 C++ 参数解析(来源牛客网)
题目地址:参数解析重点是要意识到利用flag来区别处理在“”内外的字符#include<iostream>#include<vector>#include<string>using namespace std;int main(){ string str,stt; int i=0; bool flag = 0; vec...
2019-12-14 17:01:49 99
原创 C/C++ 快速排序的实现
代码如下:#include<iostream>using namespace std;void qS(int *array,int left,int right){ if(left<right){ //快速排序的终止条件,当仅剩下一个元素则结束快速排序 int key=array[left]; int low=left,high=right; ...
2019-12-12 08:10:57 113
原创 C++ 详解dynamic_cast
dynamic_cast运算符的主要用途:将基类的指针或引用安全地转换成派生类的指针或引用,并用派生类的指针或引用调用非虚函数。如果是基类指针或引用调用的是虚函数无需转换就能在运行时调用派生类的虚函数。前提条件:当我们将dynamic_cast用于某种类型的指针或引用时,只有该类型含有虚函数时,才能进行这种转换。否则,编译器会报错。dynamic_cast运算符的调用形式如下所示:dynam...
2019-11-19 16:02:53 677
原创 C++ 友元函数友元类
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: friend 类型 函数名(形式参数);友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。 一个函数可以是多个类的友元函数,只需要在各个...
2019-11-19 13:17:12 120
原创 C++ 关于继承部分重要知识点
1.继承体现了面向对象设计的层次结构,体现了有捡到到复杂的认知过程2.继承是使代码可以复用的最重要手段3.继承方式和访问限定符4.继承基类成员访问方式的变化5.实际运用中一般都是使用public继承,几乎很少使用protected/private继承6.派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用但是基类对象不能赋值给派生类对象7.基类的指针可以通过强制类型转换赋...
2019-11-19 13:14:07 75
原创 C++ 容易犯的错误和容易忘记的知识点(一)
在使用printf输出时,关于字符串输出格式对于 %-a.bs:表示左对齐a 表示输出占的宽度,如果这个宽度不够,则自动扩展到足够宽度b 表示输出字符串中多少个字符,如果原字符串长于这个宽度,则截断,多余的不输出2.关于指针数组和数组指针,比方说:<1> int p1[10]; 和 <2> int (p2)[10];分清楚的关键是依靠运算符优先级,[ ]优先级大...
2019-11-13 20:05:20 80
原创 C/C++ 计算结构体大小
计算结构体的大小:结构体中可以定义的数据类型:1.基本类型2.上面已经出现过的数据类型,比如说上面已经定义过的结构体3.指向自己的指针因为内存对齐的问题,各个数据类型放的位置不同就会导致结构体的大小不一样,那么到底怎样计算一个结构体的大小呢?先介绍一个概念——偏移量,结构体中的偏移量就是结构体成员和结构体变量的地址之差,比如说第一个结构体成员的偏移量就是0,第二个结构成员的偏移量就是第一个结构体成...
2019-11-13 12:17:34 531
原创 C/C++ 关于一维或二维数组首地址表示含义
这是一个经常会忘却的知识点,最近也一直在吃这方面的亏索性整个复习一遍把这个知识点彻底牢记一.一维数组若有数组 int a[6];a的值是数组首元素的地址,所以a+1,就是第二个元素的地址。而&a是整个数组的地址,所以&a+1,就是向后移动(10*4)个单位。所以相差40一维数组方面较为基础,主要是记忆所以不举例代码二.二维数组二维数组方面是需要稍微费心学习下的首先是...
2019-11-13 11:18:08 1702
原创 C++ 使用erase接口需要注意!!
本来我是不怎么关注过这个点的,但是今天的一道题把我给难住了,看过答案之后才知道就是因为我对于erase接口使用的不了解造成的,所以特意把这道题拿出来说一下题目要求是给出以下代码的输出结果:#include<iostream>#include<vector>using namespace std;int main(){ vector<int> a...
2019-11-11 00:15:32 125
原创 运算符优先级
运算符优先级优先级 运算符高 ++,--(用作前缀);(),+,-(一元),!,~ *,/,% +,- <<,>> <,>,<=,>= ==,!= & ^ | ...
2019-11-08 21:23:36 38
原创 C++ STL主要组件之String总结(第二部分 深、浅拷贝问题以及赋值运算符重载)...
第一部分连接https://blog.51cto.com/14232799/2447326二.String的模拟实现在第一步之后紧接着的就该是模拟实现部分,这一部分主要是体现自己对第一部分的掌握情况。强烈推荐和我一样在学习String的朋友们自己动手实现一下。因为在面试中,面试官总喜欢让我们自己来模拟实现string类。自己来实现String最主要是实现String类的构造、拷贝构造、赋...
2019-11-02 22:12:22 119
原创 C++中 NULL和nullptr关系
在C++中,NULL是一个宏,其实质是0。而nullptr是从C++11开始引入的关键字。在C语言中,NULL的定义为(void)0,因为C语言可以隐式转换。但在C++中,int p = (void ) 0这样的语句会报错,因为在C++中void 类型是不允许隐式转换成其他类型的,因此在C++中直接将NULL定义为0,一个int类型的变量。这样导致在出现重载函数的情况下,程序会出现问题。所以,...
2019-11-02 17:58:45 127
原创 C++ STL主要组件之String总结(第一部分,构造和操作)
最近在学习C++时,进入到了STL的学习阶段,在发现到这个部分的重要性时,我打算把对STL的学习分步骤记录下来,我首先打算学习的是组件String的部分,此文章主要只记录内部构造和对象基本操作。STL是由C++提供的标准模板库,内含多个主要组件,此次总结的是String部分的内容。String在STL中算是较为重要的部分,所以需要我重点攻克。先放一张我学习String后对于此部分知识点的概括。...
2019-11-02 17:42:16 94
原创 有关realloc malloc calloc
realloc,malloc,calloc的区别三个函数的申明分别是: void realloc(void ptr, unsigned newsize); void malloc(unsigned size); void calloc(size_t numElements, size_t sizeOfElement); 都在stdlib.h函数库内它们的返回值都是请求系统分配的地址,如果请求失败就...
2019-09-13 10:46:37 65
原创 C语言编程 产生一个随机数
利用rand()函数来返回一个一随机数值,范围在0至RAND_MAX间。返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767)。具体要看定义的变量类型,int整型的话就是32767。此时产生的是一个伪随机数值,在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。利...
2019-08-02 19:32:55 1020
原创 C语言数据结构 链表总结
单向链表(无头无循环)1.头插cur->next=head;head=cur;2.后插cur->next=pos->next;pos->next=cur;3.头删tmp=head->next;free(head);head=tmp;4.后删tmp=pos->next;pos->next=tmp->next;free(tmp)...
2019-07-22 16:47:50 118
原创 C语言数据结构 双向链表以及基本功能实现
项目头文件:#ifndef _LIST_H_#define _LIST_H_#include <stdio.h>#include<stdlib.h>typedef int LTDataType;typedef struct ListNode { LTDataType _data; struct ListNode* _next; stru...
2019-07-22 11:31:12 94
原创 C语言数据结构 单链表及其基本功能实现
头文件如下:#ifndef _SLIST_H_#define _SLIST_H_typedef int SLTDataType;typedef struct SListNode{ SLTDataType data; struct SListNode* next;}SListNode;void SListInit(SListNode** phead);void S...
2019-07-22 09:56:55 96
原创 C语言数据结构 线性表的基本功能实现
头文件如下#ifndef _SEQLIST_H_#define _SEQLIST_H_// 顺序表的动态存储#include <stdio.h>#include <stdlib.h>#include <string.h>typedef int SLDataType;typedef struct SeqList { SLDataTyp...
2019-07-22 09:53:23 103
原创 C语言 memcpy的实现
```#include#includevoid mymemcpy(char *str1, char *str2, int k){ int i; for (i = 0; i < k; i++,str1++,str2++) { *str1 = *str2; }}int main(){ int k = 3; char str1[]=" "; cha...
2019-05-13 09:24:43 84
原创 C语言 strcmp的实现
```#include#includeint mystrcmp(char* str1, char* str2){ for (;*str1!='\0' ;str1++,str2++) { if (*str1 != *str2) { if (*str1>*str2) { return 1; } else if (*str1*str2) {...
2019-05-13 09:23:46 68
原创 C语言 strchr的实现
```#include#include#includechar *mystrchr(char *str, char c){ int i; for (i = 0; i
2019-05-13 09:22:37 87
原创 C语言 strstr的实现
```#include#include#includechar *mystrstr(const char *str1,const char *str2){ int i = 0,m=0; while (1) { for (i = 0; i < strlen(str1); i++) { char *sta = str1 + i; for (m = 0;...
2019-05-13 09:21:36 86
原创 C语言 strcat的实现
```#include#include#includevoid mystrcat(char *arr1, char *arr2,int leng){ int i=1,m=0,length=0; while(i) { if (*(arr1 + m) != '\0') { length++; m++; continue; } i = 0; } fo...
2019-05-13 09:19:34 75
原创 C语言 strcpy的实现
```#include#includevoid mystr(char *arr2, char *arr1,int length){ int i; for (i = 0; i < length; i++) { if (*(arr1+i) != '\0') { *(arr2 + i) = *(arr1 + i); } }}int main(){ char...
2019-05-13 09:18:09 76
原创 JAVA 三角形类Triangle(GeometricObject继承)
```package triangletest;import java.util.*;public class TriangleTest{public static void main(String args[]){Scanner ss=new Scanner(System.in);System.out.println("please input there sides and c...
2019-05-12 21:37:40 241
原创 C语言编程 找出数列中只出现一次的两个数
原题:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字,编程实现。此题要用到在数列中找出只出现一次的一个数字的方法参考https://blog.51cto.com/14232799/2382172此题明显无法一次性将两个数都找出,所以需要将数列分为两部分,每一部分有一个只出现一次的数,那么此时需要的就是分离数列的条件。沿用找出一个数时的思想,将数列进行相...
2019-05-05 23:03:48 427
原创 JAVA编程练习 创建风扇对象(开关 风速等)
自带测试类源代码:public class TestFan { public static void main(String[] args) { Fan o1=new Fan(); Fan o2=new Fan(); o1.setspeed(o1.FAST); o1.setradius(10); o1.setcolor("yellow"); ...
2019-04-29 18:14:38 276
原创 JAVA编程练习 账户对象创建(账户名 余额 利息 日期等)
自带测试类源代码:package testaccount;public class TestAccount{public static void main(String args[]){Account ss=new Account(1122,20000);ss.setannualInterestRate(4.5);ss.withDraw(2500);ss.deposit(3000);...
2019-04-29 18:12:38 151
原创 C语言编程 子函数中利用指针输出二维数组
一般输出方式:void print1(int arr[][3], int row, int col){int i, j;for (i = 0; i < row; i++){for (j = 0; j < col; j++){printf("%d", arr[i][j]);}printf("\n");}}指针输出方式:void print2(int arr, int row, int ...
2019-04-28 17:53:35 1302
原创 C语言编程 字符串的旋转(左旋右旋及判断)
此前不太熟悉这种类型的题目,特此做一个合计的方法总结。包括字符串中字符的左旋(右旋),和判断一个字符串是否是由另一个字符串旋转(左旋或者右旋)而来。一.字符串的左旋(右旋)由于左旋和右旋思路一致,这里仅介绍左旋方法。这种题目有两种思路:1.首字符的后置以及其余元素的往前推置,循环重复此过程K次(k为左旋字符个数)。eg:字符串为“ABCDEF\0”,要旋转2个字符,首先保存首字符到一个变量,...
2019-04-28 17:32:19 841
原创 C语言编程 在杨氏数组中查找数字
题目:杨氏矩阵(一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的)在这样的数组中查找一个数字是否存在。要求时间复杂度小于O(N);主要思路:题目要求时间复杂度度不能大于O(N),所以判断次数必须小于遍历一次数组次数。所以从数组的右上角开始判断,若当前元素大于要查找的数字,则跳过当前列查询下一列,若当前元素小于要查找的数,则跳过当前行查找下一行,直至找到或者找不到。eg:此处使用数...
2019-04-28 10:08:32 103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人