
C++基础
文章平均质量分 72
记录C++的基础知识
Mr顺
acm/蓝桥杯刷题狂,熟悉掌握Java/python/C++/C后端语言,前端vue/jQuery/JavaScript/jsp也能写,喜欢研究底层逻辑,请多指教。
展开
-
C++:链表(练习)
(1)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均未到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。当一个表到达表尾结点,为空时,将非空表的剩余元素直接链原创 2020-09-05 19:50:49 · 1888 阅读 · 0 评论 -
C++ struct的4种定义方式
C++ struct的4种定义方式第一种语法表示第二种语法表示第三种方式第四种方式结构体将不同的数据烈性整合在一起构成一个新的类型,相当于数据库中一条记录,比如学生结构体,整合了学号,姓名等信息。结构体的好处就是可以对这些信息进行整体管理操作,类似面向对象中类的属性,有了结构体,就可以更好抽象描述一个类别,个人感觉类就是由结构体发展而来的,在c/c++中,结构体声明的关键字为struct.语法:第一种语法表示struct 结构体名称{ 数据类型 member1; 数据类型 member2原创 2020-08-21 10:23:35 · 8148 阅读 · 3 评论 -
小论结构体和类(以C和C++为例)
C/C++中结构体的区别:1、C中的结构体是能够封装c语言中已经存在的数据类型和自定义的数据类型,但不能含有函数,而c++是面向对象的除了自身地属性以外,还能够封装行为方法,所以在C++的结构体中是能够定义成员函数的;2、C++中的结构体相当于一个特殊的类;3、C语言中定义结构体变量是需要加上struct关键字的,而C++是不需要加;C++中结构体和类的异同:不同之处:1、结构体在默认情况下成员是公共的(public),类在默认情况下成员是私有的(private)。2、C++结构体内部成员变量转载 2020-08-11 20:59:33 · 225 阅读 · 0 评论 -
C语言const的用法详解,C语言常量定义详解
有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小。为了满足这一要求,可以使用const关键字对变量加以限定:const int MaxNum = 100; //班级的最大人数这样 MaxNum 的值就不能被修改了,任何对 MaxNum 赋值的行为都将引发错误:MaxNum = 90; //错误,试图向 const 变量写入数据我们经常将 const 变量称为常量(Constant)。创建常量的格式通常为:c转载 2020-07-24 22:28:00 · 1047 阅读 · 0 评论 -
关于C/C++的各种优化
关于C/C++的各种优化一.常量声明常量可以方便代码的修改,提高复用性.const int maxn=10000;const int N=10000+10;const double exp=1e-6;同时,声明常量也可以减少重复运算,提高代码速度,例子如下:string s;cin>>s;for(int i=0;i<len;i++) s[i]='a';View Code上述代码中,可以利用常量储存s的长度,减少重复计算量.string s;cin>转载 2020-07-24 19:10:43 · 880 阅读 · 0 评论 -
关于#define gcd __gcd
关于#define gcd __gcd最近做ACM题时,看到了宏#define gcd __gcd,着实不解,因此查询先关帖子做以下总结:题记:欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。欧几里德算法和扩展欧几里德算法可使用多种编程语言实现。摘自ex_gcd()—表示扩展欧几里得算法gcd()—表示最大公约数,常用方法是欧几里得算法定义1:a和b是两个不全为0的整数,称a与b的原创 2020-07-17 13:49:45 · 327 阅读 · 0 评论 -
C/C++ assert()函数用法总结
简介assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。原型定义:#include <assert.h>void assert( int expression );assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:复制代码#include <stdio.h>#.转载 2020-07-16 23:18:21 · 277 阅读 · 0 评论 -
C 内联函数:static inline 和 extern inline 的含义
C 内联函数:static inline 和 extern inline 的含义一,前言 Linux之父linus曾说过:“static inline” means “we have to have this function, if you use it, but don’t inline it, then make a static version of it in this compilation unit”. “extern inline” means “I actually have a转载 2020-07-16 22:58:58 · 1118 阅读 · 0 评论 -
从零开始的简单函数式C++(一)pair
STL 中的主要工具STL 中不仅提供了很多容器,同时也提供了两个基本的数据单位供大家使用。之所以叫数据单位,是因为本质上 pair 和 tuple 是两个通用的数据类型模板。更简单的讲,关键在于两点,其一是通用,也就是可以随用随写,其二是模板,也就是他的具体实现方法。包装两个数据的元组 pair每个人都会遇到如此简单的问题,数据的绑定。比如你有一个学习小组,每个人的姓名和他的学习能力这两个数据构成了这个小组里面所有成员的实体。假设姓名用 string 类型,学习能力用 int 类型,最传统的方法就是转载 2020-07-14 19:44:55 · 333 阅读 · 0 评论 -
C++ 动态申请一维数组
C++ 动态申请一维数组 (无参类型)在编程过程中,我们经常会使用数组来存放数据,因此需要直接申请足够大的空间来保证数组访问不会越界,但是即便这样,我们依然不 能 保证空间足够分配,浪费空间,而且有时也会报错所以我们需要动态申请。C语言中使用malloc和free动态分配内存和释放内存,在C++中保留了这两个函数而且使用new和delete更简单的进行内存的分配和释放。运算符new用于内存分配的基本形式:int *p=new int[n]; //定义一个整型指针变量p,new动态分配存放一个整数的转载 2020-07-14 18:42:45 · 2000 阅读 · 0 评论 -
malloc函数及用法
动态存储分配在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。例如:int n;scanf("%d",&n);int a[n];用变量表示长度,想对数组的大小作动态说明,这是错误的。但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题,用数组的办法很难解决。为了解决上述问题,C...原创 2020-04-04 16:16:29 · 5405 阅读 · 1 评论