- 博客(86)
- 收藏
- 关注
原创 C++算法基础语法-13
C/C++内置的double类型由相应的二进制存储的,double在计算的时候是会可能丢失精度的,最后进行浮点数比较的时候要注意做一个fabs,检查两个数的差的绝对值是否小于一个很小的正数(称为“epsilon”或“精度阈值”),如果小于这个阈值,就认为这两个数是相等的。cout << "num1 和 num2 不相等" << endl;cout << "排序后的字符串: " << str << endl;cout << "原始字符串: " << str << endl;// 计算字母间差值。
2025-02-25 20:55:33
567
原创 C++算法竞赛基础语法——12
/加速指令后不同时使用cin/cout与scanf/printf。stoi函数将string转化为数字,字符串转换为数字to_string。奇数偶数统计——无以0结束标志"Ctrl+z再按下回车结束程序"万能头文件#include <bits/stdc++.h>计算2025年2月24号是2025年的第55天。getline读入输入的字符串中空格的数量。奇数偶数统计——以0为结束标志。输入输出cin/cout。
2025-02-24 21:37:13
888
原创 C++算法竞赛基础语法-11
操作集:长度为MaxSize的堆栈S ∈ Stack,堆栈元素item ∈ ElementType。栈的特性:先进后出,后进先出,最先放入栈的内容后被拿出来,最后放入栈的内容最先被拿出来。push(&S,e)——初始条件“栈S已经存在”,操作结果“插入元素e为新的栈顶元素”栈的定义(堆栈),先进后出,删除和插入都在栈顶操作的线性表。栈的删除——pop()"栈顶移除一个元素,并将栈数-1",是运算符,从栈中弹出两个操作数,先弹出的。,是运算符,从栈中弹出两个操作数,先弹出的。
2025-02-21 15:57:36
899
原创 C++算法竞赛基础语法-10
是一种强制类型转换操作符,用于在编译时进行类型转换,通常用于将一个类型的值转换为另一个类型。第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。enum 枚举名 {枚举元素1,枚举元素2,……先定义枚举类型,再定义枚举变量。定义枚举类型的同时定义枚举变量。省略枚举名称直接定义枚举变量。
2025-02-20 15:58:12
316
原创 C++算法竞赛基础语法-9
分区操作: 使用两个指针(通常称为i和j),从数组的两端开始,向中间移动, 当i指针找到比基准大的元素,j指针找到比基准小的元素时,交换这两个元素, 重复上述过程,直到两个指针相遇。(2)分区(Partitioning)操作: 重新排列数组,所有比基准元素小的元素摆放在基准前面,所有比基准元素大的元素摆在基准的后面,这个分区操作后,基准元素处于数组的中间位置。// i 指向比基准小的元素的最后一个位置。(1) 选择基准元素(Pivot): 从数组中选择一个元素作为基准元素(pivot)
2025-02-14 19:02:37
361
原创 C++算法竞赛基础语法-8
第二次插入: 取出 4,与5比较,4 < 5,将5向后移动一位,再与2比较,4 > 2,将4插入到2和5之间,得到[2, 4, 5] [6, 1, 3]第四次插入: 取出1,依次与6, 5, 4, 2比较,将它们依次向后移动,将1插入到最前面,得到[1, 2, 4, 5, 6] [3]初始状态:[5] [2, 4, 6, 1, 3](已排序部分为[5],未排序部分为[2, 4, 6, 1, 3])第一次插入: 取出2,与5比较,2 < 5,将5向后移动一位,得到[2, 5] [4, 6, 1, 3]
2025-02-13 15:40:55
249
原创 C++算法竞赛基础语法-7
选择排序:选择排序的基本思想是在每一轮中从未排序的部分挑选出最小(或最大)的元素,将其放到已排序部分的末尾,逐步缩小未排序部分的范围,最终实现整个序列的有序排列。int arr[] 更直观,表示这是一个数组, 更容易理解代码的意图,尤其是当函数操作的是数组时。int* arr 更通用,明确表示这是一个指针, 可以接受数组的地址,也可以接受单个指针变量。// 传入数组 ,使用数组形式调用函数。// 传入指针, 使用指针形式调用函数。是一种数组的声明和表示方式,通常用于声明数组或在函数参数中表示数组。
2025-02-12 15:29:24
557
原创 C++算法竞赛基础语法-6
int *arr是函数的第一个参数, int * 表示这是一个指向整数的指针 ,arr 是参数的名称,它是一个指针变量,指向数组的第一个元素;在C++中,数组通常通过指针传递,当你传递一个数组给函数时,实际上传递的是数组第一个元素的地址。,那么 arr 的类型是 int *,它指向数组的第一个元素(arr[0])// 递归地对数组的前 n-1 个元素进行排序。// 每次排序的元素位置。cout << "排序后的数组: ";cout << "排序后的数组: ";cout << "原来的数组: ";
2025-02-11 15:28:30
741
原创 C++算法竞赛基础语法-5
由于递归调用是先进行的,输出操作是在递归调用返回后才执行的,所以输出的顺序是从最高位到最低位,即1-2-3-return x + f(x - 1);递归函数——将组成的所有数字都逐个输出,每个数字后面加上一个“-”递归的三要素:函数的目的、递归结束的条件、函数的等价关系式。递归函数在运行时调用自己。
2025-02-10 16:11:30
415
原创 C++算法竞赛基础语法-4
/在字符串中,空格是一个字符,空格也会被计入字符串的总长度。字符串的比较——两个string类型可以直接使用==、!cout << "转化后的字符:" << ch1 << endl;cout << "原来的字符:" << ch << endl;类的一个成员函数,用于返回字符串的长度,即字符串中字符的数量,与。成员函数,用于在字符串中查找指定的子字符串。cout<<"str的长度:"<<l<<endl;length()/size()——获取字符串的长度。字符串的查找find()——位置。
2025-02-09 16:08:40
636
原创 C++算法竞赛基础语法-3
set为C++标准模板库(STL)中的一种有序容器 自动去重:set容器内部确保所有元素都是唯一的,自动去除重复的元素 自动排序:set容器中的元素会按照一定的顺序排列,默认情况下是升序排列。1.下标访问 vector支持下标访问,像普通数组一样,可以使用vectorname[index]的形式来访问或修改元素,访问下标从0开始,直到vectorname.size() - 1。2.迭代器访问 迭代器是一种类似于指针的对象,提供了对vector容器中元素的安全访问。创建一个空的动态数组,不包含任何元素。
2025-02-08 16:19:13
630
原创 C++算法竞赛基础语法-2
(1)模板(template) 代码重用的重要机制,是泛型技术(即与数据类型无关的通用程序设计技术)的基础。(1)类(class)一种封装了数据和操作数据的函数的编程结构。受保护成员,可以在类的内部以及派生类中访问。函数模板:用于定义一组具有相同逻辑但。(2)类的成员——成员变量、成员函数。类模板:用于定义一组具有相同逻辑但。// 定义模板函数,返回较大的值。公开成员,可以在类的外部访问。私有成员,只能在类的内部访问。操作符用于动态分配内存。(二)class-类。
2025-02-07 17:08:59
908
原创 C++的算法竞赛基础语法-1
对于有符号数,左边空出的位补符号位(正数补0,负数补1),对于二进制数1011(十进制的11),右移1位后变为101(十进制的5),右移一位的效果相当于将这个数除以2(取整)按位异或运算的规则:两个位相同(都为0或都为1)时,结果为0;两个位不同(一个为0,一个为1)时,结果为1。按位或运算的规则:两个位中只要有一个为1,结果就为1,只有两个位都为0时,结果才为0。cout<<"左移的结果为"<<(a<<1)<<endl;按位与运算的规则:两个位都为1时,结果才为1,否则为0。按位取反(NOT,符号为~)
2025-02-06 17:04:40
283
原创 Algorithm
最大公因数公式——long long _gcd(long long a,long long b){return b?cout << "最大公因数是:" << result << endl;cout << "最小公倍数:" << c<< endl;用于遍历一个序列(如数组、容器等)中的每个元素,,然后执行循环体中的代码,直到遍历完。最小公倍数=a*b/最大公因数。(二)最大公因数与最小公倍数。(三)最大值、最小值与绝对值。中的每个元素复制给变量。(五)反转reverse。
2025-02-05 20:05:48
808
原创 14-9-3C++STL的set容器
pair<T1,T2>存放的两个值的类型,可以不一样,如T1为int,T2为float,T1,T2也可以是自定义类型。上限是闭区间,下限是开区间,如[beg, end)set容器的pair对组——set容器set.equal range(elem)pair.second是pair里面的第二个值,是T2类型。2.函数返回两个迭代器,而这两个迭代器被封装在pair中。pair.first是pair里面的第一个值,是T1类型。3.pain译为对组,可以将两个值视为一个单元。
2025-02-03 13:12:39
374
原创 14-9-2C++STL的set容器
/该容器是按升序方式排列元素,set<int>相当于set<int,less<int>>//返回容器中值为elem的元素个数,对set容器而言,结果为0/1,对multiset而言, 值可能大于1。//查找elem元素,返回指向elem元素的送代器。cout << "s2的排序:";
2025-02-02 19:45:58
603
原创 14-9-1C++STL的set容器
5.不可以直接修改set或multiset容器中的元素值,因为该类容器是自动排序的,如果希望修改一个元素值必须先删除原有的元素,再插入新的元素。1. set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列,元素插入过程是按排序规则插入,所以不能指定插入位置。//删除的元素不在set中返回false。//删除区间[beg,end)的所有元素删钾区间内的元素。//返回容器中倒数最后一个元素的后面的迭代器。set.rbegin()://返回容器中倒数第一个元素的迭代器。set.end();
2025-02-01 19:47:14
555
原创 14-8C++STL的queue容器
/存放一个string的queue容器。//存放一个int的queue容器。(3)queue容器的push()与pop()方法。//删除队首元素,出队。//返回最后一个元素。(1)queue容器的简介。(2)queue对象的构造。
2025-01-31 20:24:30
880
原创 14-7C++STL的stack容器
stack.pop()//栈头移除第一个元素。//一个存放string的stack容器。//ー个存放float的stack容器。stack采用模板类实现,stack对象的默认构造形式stack <T> s;//一个存放int的stack容器。stack堆栈容器,“先进后出”的容器,且stack没有迭代器。stack的push()与pop()方法。
2025-01-26 20:04:21
788
原创 14-6-3C++STL的list
/删除[beg,end)区间的数据,返回下一个数据的位置,list.erase(pos);//删除pos位置的数据,返回下一个数据的位置。//在pos位置插入[beg,end)区间的数据,无返回值。//在pos位置插入一个elem元素的拷贝,返回新数据的位置。3.Ist.remove(elem)://删除容器中所有与elem值匹配的元素。
2025-01-25 20:40:07
1279
原创 14-6-2C++STL的list
/重新指定容器的长度为num,若容器变长,则以elem值填充新位置;//重新指定容器的长度为num,若容器变长,则以默认值填充新位置;//将[beg,end)区间中的数据拷贝赋值给本身,注意该区间。2. list(beg,end)://构造函数将[beg,end)区间中的元素拷贝给本身。cout<<"lst1的长度"<<lst1.size()<<endl;3.list(const list&lst)://拷贝构造函数。//返回容器中元素的个数。
2025-01-24 20:29:03
1046
原创 14-6-1C++STL的list
list容器的迭代器是“双向迭代器”:双向迭代器从两个方向读写容器。2.list不可以随机存取元素,所以不支持at.(pos)函数与[ ]操作符。//返回容器中倒数最后一个元素的后面的迭代器。//在容器开头插入一个元素。//返回容器中倒数第一个元素的迭代器。正向2.list.end();//返回容器中最后一个元素之后的迭代器。//返容器中第一个元素的迭代器。//删除容器中最后一个元素。
2025-01-23 20:28:41
1161
原创 14-5C++STL的deque容器
1.deque是“double-ended queue"的缩写和vector-样都是STL的容器。4.deque可以随机存取元素(支持索引值直接存取,用[]操作符或at()方法)5.deque头部和尾部添加或移除元素都啡常快速。3.deque在接口上和vector非常相似,在许多操作的地方可以直接替换。(二)deque.push_front(elem);//容器头部插入一个数据。(三)deque.pop_front();//删除容器第一个数据。2.deque是双端数组而vector是单端的。
2025-01-22 20:09:38
311
原创 14-4C++STL的迭代器失效
/it失效,insert会返回一个新的有效迭代器。修改为全部删除3的代码。(1)插入元素后失效。(2)删除元素后失效。
2025-01-21 21:04:41
666
原创 14-3C++STL的迭代器
每种容器都定义了一队命名为beqin和end的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的元素指向第一个元素。由end返回的迭代器指向最后一个元素的下一个,若v为空,begin和end返回的相同。=操作符来比较两个迭代器,若两个迭代器指向同一个元素,则它们相等,否则不相等。迭代器的作用:迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。vector容器的迭代器属于“随机访问迭代器”:迭代器一次可以移动多个位置。迭代器是一种检查容器内元素并且遍历容器内元素的数据类型。
2025-01-20 19:48:35
672
原创 14-2-2C++STL的vector容器
/重新指定容器的长度为num,若容器变长,则以elem值填充新位置,如果容器变短,则末尾超出容器长度的元素被删除。//重新指定容器的长度为num,若容器变长,则以默认值填充新位置,如果容器变短,则末尾超出容器长度的元素被删除。//在pos位置插入[beg,end)区间的数据,无返回值。//在pos位置插入一个elem元素的拷贝,返回新数据的位置。1.vector.size0://返回容器中元素的个数。
2025-01-19 20:27:34
549
原创 14-2-1C++STL的vector容器
/将[beg,end)区间中的数据拷贝赋值给本身,注意该区间是左闭右开的区间。//构造函数将[beg,end)区间中的元素拷贝给本身,注意该区间是左闭右开的区间。//一个存放string的vector容器。//一个存放float的vector容器。//用于存放CA对象的指针的vector容器。//一个存放int的vector容器。//将vec与本身的元素互换。
2025-01-18 20:19:39
589
原创 14-1C++STL的初始
/结束迭代器——指向容器中的最后一个元素的下一位。//结束迭代器——指向容器中的最后一个元素的下一位。//结束迭代器——指向容器中的最后一个元素的下一位。//起始迭代器——指向第一个容器中的元素。//起始迭代器——指向第一个容器中的元素。提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式每个容器都有自己专属的迭代器。STL六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。
2025-01-17 20:42:02
689
原创 13-1类与对象
C++的class与struct的区别默认的访问权限不同,class默认的权限是private私有,struct默认的权限是公共public。cout<<"圆的周长为:"<<c1.calculateZC()<<endl;cout<<"姓名:"<<p.getname()<<endl;访问权限:1.公共权限 public 成员类内可以访问,类外可以访问。cout<<"年龄:"<<p.getage()<<endl;cout<<"姓名:"<<name<<endl;cout<<"姓名:"<<name<<endl;
2025-01-16 15:50:24
1128
原创 11C++自定义函数与递归
void f(char st,char mid,char en,int n)//从st移动n个盘子到en,中间中转到mid。cout << "斐波拉契数列的第" << n << "项是:" << f(n) << endl;// 斐波拉契数列的第0项和第1项分别是0和1。printf("斐波拉契数列的%di项为%d\n",n,f(n));//递归——内部直接或间接的调用自己的函数,要素:递归关系式与递归终止条件。// 递归函数计算斐波拉契数列的第n项。int f(int x)//返回x!
2024-11-17 14:11:12
682
原创 10C++函数高级
/函数重载,同一个作用域、函数名称相同 、函数参数类型不同/个数不同/顺序不同。//注意事项:如果某个位置已经有默认参数,此位置以后, 从左往右都必须有默认值。//函数默认参数,语法:返回值类型 函数名(形参=默认值){}//如果自己传入数据,使用自己的数据,若无,使用默认值。//如果自己传入数据,使用自己的数据,若无,使用默认值。//如果自己传入数据,使用自己的数据,若无,使用默认值。//函数占位参数,语法 :返回值类型 函数名(数据类型){}//占位参数可以添加默认参数。//占位参数暂时未用。
2024-11-14 20:21:11
356
原创 09C++结构体
cout<<"姓名:"<<s1.name<<" "<<"年龄:"<<s1.age<<" " <<"分数:"<<s1.score<<endl;cout<<"姓名:"<<s2.name<<" "<<"年龄:"<<s2.age<<" " <<"分数:"<<s2.score<<endl;cout<<"姓名:"<<s3.name<<" "<<"年龄:"<<s3.age<<" " <<"分数:"<<s3.score<<endl;<<"分数: "<<stuarray[i].score<<endl;
2024-11-12 20:18:02
1771
原创 08C++引用
/引用必须初始化(错误的引用:int &b;//地址传递,形参会修饰和实参。swap1(a,b);//值传递,形参不会修饰和实参。//值传递,形参不会修饰和实参。//引用传递,形参会修饰和实参。//引用在初始化后不可改变。//引用必须初始化(错误的引用:int &b;//赋值操作,而不是更改引用。//引用基本语法:数据类型 &别名=原名。//交换函数——地址传递。//交换函数——地址传递。//交换函数——值传递。//交换函数——值传递。//引用初始化不可更改。
2024-11-11 10:46:29
883
原创 C++练习题(3)
cout << "除数不能为0" << endl;cout << "除数不能为0" << endl;//C++表格形式输出数据——将 1~100 的数据以 10x10 矩阵格式输出。cout << "无效的运算符" << endl;cout << "输入两个数字和一个运算符: ";//C++创建各类三角形图案——正三角形。cout<<"输入符号:";cout<<"输入符号:";//C++实现简单的计算器。
2024-11-08 18:48:16
623
原创 C++练习题(1)
cout<<"n=0既不是正数也不是负数"<<endl;cout<<ch<<"不是字母"<<endl;cout<<ch<<"是字母"<<endl;cout<<ch<<"元音字母"<<endl;cout<<ch<<"辅音字母"<<endl;cout<<year<<"非闰年"<<endl;cout<<"n为偶数"<<endl;cout<<"n为奇数"<<endl;cout<<year<<"闰年"<<endl;cout<<"n为正数"<<endl;cout<<"n为负数"<<endl;
2024-11-05 18:10:17
929
原创 C++练习题
printf("double的字节大小:%zu\n" ,sizeof(double));cout<<"double的大小:"<<sizeof(double)<<endl;cout<<"float的大小:"<<sizeof(float)<<endl;cout<<"char的大小:"<<sizeof(char)<<endl;cout<<"int的大小:"<<sizeof(int)<<endl;
2024-11-04 22:56:11
1811
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅