将博客搬至CSDN
自从上一次学习STL的组件(string)已经过去有些日子了,主要是还在进行其他方面的学习,现在有了空闲继续来学习C++STL方面,此次学习过程中也是让我深深感到了C++STL的实用,总之要学习和总结的东西还有很多,就请路过的看客和我一起学习前进吧。-----(≧∇≦)ノ首先是关于vector的介绍经过一遍学习后,我也大致了解了vector的学习步骤,我将其分为以下三个部分:有人可能会问那一条红线
首先在谈到菱形虚拟继承之前先说明一下菱形继承:菱形继承是多继承的一种特殊情况(如下,画渣勿喷):图中BC两个类都继承了A类,而BC又都被D类继承按照继承的定义,派生类当中都包含了基类,而这时虚拟继承这种情况就会产生问题<a>数据冗余首先是按照虚拟继承的这种方法,D类当中就包含了两份A类数据(分别来自B类和C类)<b>二义性其次是,当我们通过D类去访问A类中的数据时,就会产生
首先是定义:explicit关键字只能修饰只有一个参数的构造函数,或者有多个参数,但是除第一个参数外其他的参数都有默认值的构造函数。它的作用是表明构造函数是显式方式显示的。(类构造函数默认为隐式)如果类构造函数参数大于或等于两个时,是不会产生隐式转换的,所以explicit关键字也就无效了举个例子:classAMD{public:AMD(intlevel){//这里的构造函数默认就是隐式声明...
本题整体思想不难,主要是想好用什么容器去存储计算值和计算结果值,这里用的是字符串,当然也可以用数组,题目链接:https://www.nowcoder.com/practice/5821836e0ec140c1aa29510fd05f45fc?tpId以下为解答代码(具体细节看注释):stringAddLongInteger(stringaddend,stringaugend){inti=0,n=
首先是概念:二叉搜索树又称二叉排序树,它具有以下的性质:若是左子树不为空,则左子树上所有节点的值小于根节点的值若是右子树不为空,则右子树上所有结点的值大于根节点的值二叉搜索树的左右子树也是二叉搜索树二叉搜索树的中序排列是一个有序数列再下来是它的实现首先是构造节点:template<classK>structBStreeNode{BStreeNode(constK&date=K(
重点是要意识到利用flag来区别处理在“”内外的字符#include<iostream>#include<vector>#include<string>usingnamespacestd;intmain(){stringstr,stt;inti=0;boolflag=0;vector<string>arr;while(getline(cin,str)
代码如下:#include<iostream>usingnamespacestd;voidqS(int*array,intleft,intright){if(left<right){//快速排序的终止条件,当仅剩下一个元素则结束快速排序intkey=array[left];intlow=left,high=right;while(low<high){while(key<
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:friend类型函数名(形式参数);友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。一个函数可以是多个类的友元函数,只需要在各个类中分别声明。友元函数的调用与一般函数的
1.继承体现了面向对象设计的层次结构,体现了有捡到到复杂的认知过程2.继承是使代码可以复用的最重要手段3.继承方式和访问限定符4.继承基类成员访问方式的变化5.实际运用中一般都是使用public继承,几乎很少使用protected/private继承6.派生类对象可以赋值给基类的对象/基类的指针/基类的引用但是基类对象不能赋值给派生类对象7.基类的指针可以通过强制类型转换赋值给派生类的指针。但是必
在使用printf输出时,关于字符串输出格式对于%-a.bs:表示左对齐a表示输出占的宽度,如果这个宽度不够,则自动扩展到足够宽度b表示输出字符串中多少个字符,如果原字符串长于这个宽度,则截断,多余的不输出2.关于指针数组和数组指针,比方说:<1>intp1[10];和<2>int(p2)[10];分清楚的关键是依靠运算符优先级,[]优先级大于,所以p是一个数组,int修饰
这是一个经常会忘却的知识点,最近也一直在吃这方面的亏索性整个复习一遍把这个知识点彻底牢记一.一维数组若有数组inta[6];a的值是数组首元素的地址,所以a+1,就是第二个元素的地址。而&a是整个数组的地址,所以&a+1,就是向后移动(10*4)个单位。所以相差40一维数组方面较为基础,主要是记忆所以不举例代码二.二维数组二维数组方面是需要稍微费心学习下的首先是定义方面若是有数组a
本来我是不怎么关注过这个点的,但是今天的一道题把我给难住了,看过答案之后才知道就是因为我对于erase接口使用的不了解造成的,所以特意把这道题拿出来说一下题目要求是给出以下代码的输出结果:#include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>a;a.push_back(1
第一部分连接https://blog.51cto.com/14232799/2447326二.String的模拟实现在第一步之后紧接着的就该是模拟实现部分,这一部分主要是体现自己对第一部分的掌握情况。强烈推荐和我一样在学习String的朋友们自己动手实现一下。因为在面试中,面试官总喜欢让我们自己来模拟实现string类。自己来实现String最主要是实现String类的构造、拷贝构造、赋值运算符重
最近在学习C++时,进入到了STL的学习阶段,在发现到这个部分的重要性时,我打算把对STL的学习分步骤记录下来,我首先打算学习的是组件String的部分,此文章主要只记录内部构造和对象基本操作。STL是由C++提供的标准模板库,内含多个主要组件,此次总结的是String部分的内容。String在STL中算是较为重要的部分,所以需要我重点攻克。先放一张我学习String后对于此部分知识点的概括。首先
单向链表(无头无循环)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);5遍历头for(cur=
项目头文件:#ifndef_LIST_H_#define_LIST_H_#include<stdio.h>#include<stdlib.h>typedefintLTDataType;typedefstructListNode{LTDataType_data;structListNode*_next;structListNode*_prev;}ListNode;typede
头文件如下:#ifndef_SLIST_H_#define_SLIST_H_typedefintSLTDataType;typedefstructSListNode{SLTDataTypedata;structSListNode*next;}SListNode;voidSListInit(SListNode**phead);voidSListDestory(SListNode*phead);SLi
头文件如下#ifndef_SEQLIST_H_#define_SEQLIST_H_//顺序表的动态存储#include<stdio.h>#include<stdlib.h>#include<string.h>typedefintSLDataType;typedefstructSeqList{SLDataType*array;//指向动态开辟的数组size_tsi
#include<stdio.h>#include<stdlib.h>voidmymemcpy(char*str1,char*str2,intk){inti;for(i=0;i<k;i++,str1++,str2++){*str1=*str2;}}intmain(){intk=3;charstr1[]="";char*str2="ancde";mymemcpy(str
#include<stdio.h>#include<stdlib.h>intmystrcmp(char*str1,char*str2){for(;*str1!='\0';str1++,str2++){if(*str1!=*str2){if(*str1>*str2){return1;}elseif(*str1<*str2){return-1;}}}if(*str1
#include<stdio.h>#include<stdlib.h>#include<string.h>char*mystrchr(char*str,charc){inti;for(i=0;i<strlen(str);i++){if(*(str+i)==c){returnstr+i;}}returnNULL;}intmain(){char*str="ab
#include<stdio.h>#include<stdlib.h>#include<string.h>char*mystrstr(constchar*str1,constchar*str2){inti=0,m=0;while(1){for(i=0;i<strlen(str1);i++){char*sta=str1+i;for(m=0;m<strl
#include<stdio.h>#include<stdlib.h>voidmystr(char*arr2,char*arr1,intlength){inti;for(i=0;i<length;i++){if(*(arr1+i)!='\0'){*(arr2+i)=*(arr1+i);}}}intmain(){chararr1[]="abcde";chararr2[]
packagetriangletest;importjava.util.*;publicclassTriangleTest{publicstaticvoidmain(Stringargs[]){Scannerss=newScanner(System.in);System.out.println("pleaseinputtheresidesandcoloroftriangle");doublea=s
![](https://s1.51cto.com/images/blog/201905/09/abc7b9c6beac02f4e67ffd8db80d4f5c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3p
原题:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字,编程实现。此题要用到在数列中找出只出现一次的一个数字的方法参考https://blog.51cto.com/14232799/2382172此题明显无法一次性将两个数都找出,所以需要将数列分为两部分,每一部分有一个只出现一次的数,那么此时需要的就是分离数列的条件。沿用找出一个数时的思想,将数列进行相互异或
自带测试类源代码:publicclassTestFan{publicstaticvoidmain(String[]args){Fano1=newFan();Fano2=newFan();o1.setspeed(o1.FAST);o1.setradius(10);o1.setcolor("yellow");o1.seton(true);o2.setspeed(o1.MEDIUM);o2.setrad
自带测试类源代码:packagetestaccount;publicclassTestAccount{publicstaticvoidmain(Stringargs[]){Accountss=newAccount(1122,20000);ss.setannualInterestRate(4.5);ss.withDraw(2500);ss.deposit(3000);System.out.print
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号