C++笔记
记录C++ 的窍门和作品
Technical^Blog
低调
展开
-
C++之顺序表:为啥你写的代码有脏数据?
1.如果对于一个顺序表在初始化的时候不给他赋值初始化,他将会变得一发不可收拾.jpg现在声明一个线性表(顺序表),并且初始化其长度,但并未赋初值,会有什么后果呢?#include<stdio.h>#define MaxSize 10typedef struct { int data[MaxSize]; int length;//表长}SqList;void InitList(SqList& L) { /* //赋初值,可省略,但会产生"脏数据" for(int i原创 2021-09-04 14:00:24 · 569 阅读 · 0 评论 -
C++中“&”数据类型的使用技巧实例
1.不使用&,调用函数后不改变数据的初始结果#include <stdio.h>void test(int x) { x = 1024; printf("test函数内部x = %d\n",x);}int main() { int x = 1; printf("调用test前x = %d\n", x); test(x); printf("调用test后x = %d\n", x);}2.使用&,将函数内的结果带回主函数,并输出#include <原创 2021-09-04 13:29:41 · 486 阅读 · 0 评论 -
PAT1001题解
1001 害死人不偿命的(3n+1)猜想 (15 分)卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡原创 2021-07-18 21:49:38 · 146 阅读 · 0 评论 -
C++选择,插入,希尔排序算法
#include "stdafx.h"#include <stdlib.h>#include <time.h>#define NUM 100000void print(int* a,int len,bool is=true);//选择排序void select_sort(int* a,int len);//插入排序void insert_sort(int* a, int len);//希尔排序void shell_sort(int* a, int len);.原创 2021-07-16 22:47:11 · 134 阅读 · 2 评论 -
C++ STL 知识点总结
概述简介简单介绍:C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈等。STL的一个重要特点就是数据结构和算法的分离。例如,STL中sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。STL另一个重要特性是它不是面向对象的,主要依赖于模版,而不是封装和继承常用基本组件容器:容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如转载 2021-07-16 22:39:51 · 278 阅读 · 0 评论 -
C++ STL 基础知识点概述
编程 == 数据结构 + 算法描述事物 事情 算法 流程 物品 数据结构 数据1. 方法论比知识重要!2. 只有合适的,没有最好的!STL (Standard Template Library) 的概述: 1.序列式容器 vector(数组) list(链表) queue(队列) stack(栈) deque(双向队列) 关联式容器:...原创 2021-07-16 22:32:58 · 85 阅读 · 0 评论 -
C++STL的发展历程
无人问津的日子里,正是登封造极的好日子.Alexander Stepanov(后被誉为 STL 标准模板库之父,后简称 Stepanov),1950 年出生与前苏联的莫斯科,他曾在莫斯科大学研究数学,此后一直致力于计算机语言和泛型库研究。在 20 世纪 70 年代,Stepanov 开始考虑,在保证效率的前提下,是否能将算法从诸多具体应用之中抽象出来?为了验证自己的思想,他和纽约州立大学教授 Deepak Kapur 以及伦塞里尔技术学院教授 David Musser 共同开发了一种叫做 Tecto.转载 2021-07-16 21:47:16 · 230 阅读 · 0 评论 -
从C语言到C++语言
1.C语言与C++的关系C语言:众所周知,C语言是结构化和模块化的语言,是面向过程的。当程序的规模较小时,C语言运用起来得心应手。但是当问题比较复杂、程序的规模比较大的时候,C语言就会展现出它的局限性。C++:正是因为有大规模的程序需要去处理,C++就应运而生了。C++是由C发展而来的,与C语言兼容。C++既可用于面向过程的结构化程序设计,也可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。总结:1.C语言面向过程,C++既可以面向过程也可以面向对象。2.C++是在C的基础上发展而来原创 2021-07-12 14:23:47 · 240 阅读 · 2 评论 -
C++类和对象基础知识详解
1.对象(object)1.一切皆是对象。如下图:·女人是一个对象·鞋子是一个对象·包包是一个对象·衣服是一个对象·裤子是一个对象·手链是一个对象…2.对象由对象组成.这里人这个对象,由鞋子、包包、衣服、 裤子、手链等对象组成。3.每个对象都有:a)数据(描述对象的属性)b)函数(行为操作代码)2.类(class)·具有相同属性和行为的对象,我们可以把它抽象为类。·类是对象的抽象·对象是类的特例3.面向对象的程序设计(OOP)·面向过程的程序设计(Pro原创 2021-07-09 22:49:12 · 2296 阅读 · 19 评论 -
C++字符串类举例详解
16.字符串类C语言中我们使用string.h这个头文件里面的相关函数,来执行对字符串的操作。在C++中我们仍然可以继续使用 cstring这个头文件来做同样的事情。#include<iostream>#include<cstring>using namespace std;int main(){ char str1[20], str2[20], temp[20]; cin >> str1 >> str2; cout <<原创 2021-07-09 22:18:13 · 306 阅读 · 0 评论 -
C++函数模板(function template)详解
函数模板(function template)函数模板:1.建立通用的函数,函数的类型和形参的类型不用指定,而用一个虚拟的类型来代表。将数据类型参数化。2.凡是函数体相同的多个函数都可以使用函数模板。有以下重载函数:int Max(int, int, int);float Max(float, float, float);double Max(double, double, double);建立一种模板:函数模板的声明:template<typename _Ty1&原创 2021-07-09 22:05:29 · 1071 阅读 · 0 评论 -
C++函数重载详解
C++函数重载详解1.同一个函数名,参数的个数、类型、顺序不一样。2.返回值类型,不做参考。3.同名同体,参数的类型不同int Max(int a, int b, int c){ if (c > a) a = c; if (b > a) a = b; return a;}double Max(double a, double b, double c){ if (c > a) a = c; if (b > a) a = b; return a;}原创 2021-07-08 23:01:50 · 858 阅读 · 3 评论 -
C++带有默认参数的函数详解
13.带有默认参数的函数1.在声明函数的时候,可以给定一些参数默认值。2.调用的时候,缺省有默认值的参数,自动使用默认值。3.调用时,实际参数个数 >= 形式参数个数 - 默认参数个数4.默认参数必须放在右边。#include <iostream>using namespace std;int Max(int a= 12, int b= 13, int c= 15){ if (b > a) a = b; if (c > a) a = c; return原创 2021-07-08 22:44:37 · 918 阅读 · 0 评论 -
C++内联函数详解
内置函数–内联函数编译过程:1.预处理 .cpp —> .i.cpp --> 展开头文件、库文件、宏定义2.汇编 .i —> .S把代码转化成汇编代码3.编译阶段 .S —> .obj把汇编代码转化成二进制4.链接阶段 obj 2.obj 3.obj —>.exe把.obj文件链接形成可执行文件在调用函数时,需要一定时间和空间上的开销。如下图:在C语言中,我们使用宏函数。#define FUN(a,b) (a*b+a/b)在C++中我们是用内联函原创 2021-07-08 22:38:44 · 190 阅读 · 0 评论 -
C++变量的引用&详解
C++变量的引用: &1.C++在C的基础上做出的重要扩充。2.作用:为一个变量取别名,共享内存。3.声明一个引用类型,并不会开辟新的空间。4.声明引用类型时必须要初始化。int a; //声明一个变量aint &b = a; //声明b是a的引用//改变a即是改变ba = 50;cout << "b="<< b << endl;//改变b即是改变ab = 100;cout << "a=" << a <原创 2021-07-08 22:20:55 · 226 阅读 · 0 评论 -
C++实现冒泡排序
Bubble Sort 即冒泡排序,这种写法相当于相邻的数字两两比较,并且规定:“谁大谁站右边”。经过 n−1 轮,数字就从小到大排序完成了。整个过程看起来就像一个个气泡不断上浮,这也是“冒泡排序法”名字的由来,先来理解算法思想: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直原创 2021-06-23 20:48:31 · 6486 阅读 · 0 评论 -
C++ 队列(手动偷懒)
其实在C++的#include中早就模板化了队列的实现,再也不用造轮子了,手动偷懒.jpg#include<iostream>#include<queue>using namespace std;int main(){ queue<int> q; for (int i = 1; i <= 10; i++) { //依次入队 q.push(i); } if (q.empty()) return -1; else cout原创 2021-06-23 19:30:16 · 145 阅读 · 0 评论 -
C++ 实现链表
一.C++实现链表二.Java实现链表结构图如下:原创 2021-06-22 14:27:48 · 1241 阅读 · 0 评论 -
C++ vector常用技巧
一.顺序访问vector的几种方式,举例说明如下:(1)向向量a中添加元素1、1 vector<int> a;2 for(int i=0;i<10;i++)3 a.push_back(i);2、也可以从数组中选择元素向向量中添加int a[6]={1,2,3,4,5,6};vector<int> b;for(int i=1;i<=4;i++)b.push_back(a[i]);3、也可以从现有向量中选择元素向向量中添加in...原创 2021-06-20 09:34:45 · 198 阅读 · 0 评论 -
C++实现栈的基本操作
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>using namespace std;#define Status int#define SElemType int#define MaxSize 100//栈数据结构typedef struct Stack{ SElemType* base;//栈底指针 .原创 2021-05-07 19:38:44 · 496 阅读 · 0 评论