MyEffective CPP
文章平均质量分 81
Parzivval
。
展开
-
【PAT笔记】常用子函数
1.gcd(最大公因数) int gcd(int a,int b) { if (b == 0)return a; else return gcd(b, a%b); } 2.判断素数(不是素数筛) bool prime(ll it) { if (it < 2)return false; for (ll i = 2; i*i <= it; i++) if (it%i == 0)return false; return true; } 3.素数筛 (1)埃氏筛 v..原创 2020-09-04 19:49:08 · 357 阅读 · 0 评论 -
【PAT笔记】C++常用工具使用手册
1.set set的结构体重载以及内部成员访问。 struct node { int a,b; bool friend operator <(node n1,node n2) { return n1.a < n2.a; } }; set<node>nset; int main() { for (int i = 0; i < 10; i++) nset.insert({100-i,i}); for (auto it = nset.begin(); i.原创 2020-08-11 23:31:43 · 268 阅读 · 0 评论 -
string用scanf读入(节省时间)
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main() { string a; a.resize(100); //需要预先分配空间 scanf("%s", &a[0]); puts(a.c_str()); return 0; }转载 2020-06-14 21:33:31 · 446 阅读 · 0 评论 -
指针和引用作为函数参数的区别
这个问题是在写平衡树的时候遇见的,到网上看了很多,也没明白,自己尝试了举一些例子来对比,终于明白了。 一言以蔽之:如果想改变一般类型的参数的值,可以使用变量的指针做参数;如果想改变指针变量指向的地址就要用引用参数。 先介绍一下问题产生的原因: 在AVL树的函数操作里,需要返回的改变较多,所以无法定义返回值函数,只能定义含参函数通过对参数的改变对树进行维护。 这里大家想到的肯定是...原创 2018-12-02 10:37:50 · 9205 阅读 · 0 评论 -
顺序查找和堆上滤的简化
为什么要把这两个看似不相干的东西总结在一起呢?因为他们利用了相同的原理。 (1)顺序查找中无非就是数组的遍历,使用for循环遍历数组之后,每次循环节都会做一次比较,看看该节点的元素是否等于所查 找的元素。这样的话如果长度为n则有可能进行n次比较,所以这里进行一下改进。 数组MyData[ Max] 的存储从下标为1开始存储元素,每次把所要查找的元素放在0的位置,所以 for (int i ...原创 2018-12-02 09:35:27 · 243 阅读 · 0 评论 -
线性存储模拟栈和队列
一般所谓的线性存储基本是就是数组和动态分配的存储空间,在模拟栈和队列的时候,使用一个迭代器作为栈顶或者队首队尾,这个迭代器的赋值比较讲究,在初始化的时候赋值为-1最为方便,既便于判空又便于存储。在插入的时候使用数组Stack[ ]和迭代器i, 插入元素element,Stack[ ++i ] = element ; 这样,i自然就指向了栈顶的元素,同样,在Pop的时候,element = Sta...原创 2018-12-02 09:16:46 · 171 阅读 · 0 评论 -
c++引用与指针的区别(着重理解)
★ 相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。 ★ 区别: 1. 指针是一个实体,而引用仅是个别名; 2. 引用使用时无需解引用(*),指针需要解引用; 3. 引用只能在定义时被初始化一次,之后不可变;指针可变; 引用“从一而终” ^_^ 4. 引用没有 con...转载 2018-12-02 10:40:47 · 2356 阅读 · 0 评论