C++
文章平均质量分 79
小-豪-豪
这个作者很懒,什么都没留下…
展开
-
哈希总结
一:哈希结构1.1、哈希概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O((log2(N)),搜索的效率取决于搜索过程中元素的比较次数。 理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。当向该原创 2020-08-17 16:36:50 · 510 阅读 · 0 评论 -
二叉搜索树、AVL树、红黑树总结
一、二叉搜索树1.1、二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一颗空树,或者是一颗具有以下性质的二叉树: (1) 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。 (2) 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。 (3) 它的左右子树也分别为二叉搜索树。1.2、二叉搜索树的操作 (1) 二叉搜索树的查找 (2) 二叉搜索树的插入 插入的具体过程如下: a. 数为空,则直接插入 b. 数不为空,按二叉搜索树性质原创 2020-08-17 09:41:03 · 394 阅读 · 0 评论 -
项目:低配版Everything
一、项目背景 在任何操作系统中,搜索工具都是必不可少的,不管我们多么认真的对文件进行整理,当文件数量非常多时,都可能需要我们花很长时间来找某个文件。搜索工具可以让我们从大量文件中快速找到我们所需文件的位置,大大节省了查找时间。 文件搜索工具的功能如此实用,那它是用什么方法从那么多的文件中来找我们想要的一个特定文件的呢?我们到底可以用什么方法来实现文件搜索的功能呢? 带着疑惑和好奇,我通过从网上找各种资源终于实现了一个低配版的文件搜索工具。实现这个项目同时让我巩固了自己所学的C++基础原创 2020-07-30 11:29:42 · 1190 阅读 · 0 评论 -
十大经典排序算法总结
1、冒泡排序1、对前n个元素从头到尾两两进行比较,如果第一个比第二个大,就交换他们两个,最后得到的最后一个元素就是前n个元素的最大值。2、然后对前n-1个、前n-2个…,一直到前两个元素进行第一步操作,依次得到他们里面的最大值。3、进行n-1次第一步的操作后就将元素排序好了。平均时间复杂度:O(n^2)最差时间复杂度:O(n^2)空间复杂度:O(1)数据对象稳定性:稳定(相同的元素排序后相对位置不改变)#include <stdio.h>#include <iostrea原创 2020-07-25 22:59:30 · 277 阅读 · 0 评论 -
分析STL中的sort算法
而在目前的排序中,快排平均情况下是性能最好的一种排序,但是快排也有其自身的短板,比如说:元素接近有序、元素量比较大的情况下,直接使用快排时,堪称一场灾难。因此STL中sort算法并没有直接使用快排,而是针对各种情况进行了综合考虑。sort函数提供了两个版本:sort(first, last):默认按照小于方式排序,排序结果为升序,一般用于排内置类型数据。sort(first, last, comp):可以通过comp更改元素比较方式,即可以指定排序的结果为升序或者降序,一般以仿函数对象和函数指针的原创 2020-07-25 22:02:37 · 286 阅读 · 0 评论 -
stringstream的使用方法
在C语言中,如果想要将一个整形变量的数据转化为字符串格式,可以使用下面的方法:1、使用itoa()函数2、使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。#include <iostream>using namespace std;int main(){ int n = 123456789; char s1[32]; itoa(n, s1, 10);//最后原创 2020-07-10 17:14:34 · 14450 阅读 · 0 评论 -
vector的resize()和reserve()方法的区别
今天在写代码的时候发现了一个奇怪的现象,当vector对象使用resize()方法之后再使用insert()插入元素,vector对象的size会在使用resize(n)后的n基础上增加,而使用reserve()方法后,insert()方法插入元素不会在使用reserve(n)后的n基础上增加。经过研究,我发现:resize()同时改变了capacity()和size(),而reserve()只是增加了vector的capacity(),但是它的size()没有改变。例如:#include <原创 2020-05-28 12:39:06 · 364 阅读 · 0 评论 -
为什么C++可以函数重载但是C语言不可以?
函数重载的概念:函数重载是指在同一作用域中声明多个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或顺序)必须不同。常用来处理实现功能类似数据类型不同的问题。为什么C++可以函数重载但是C语言不可以?int ADD(int left, int right);int main(){ ADD(1, 2); return 0;}请看上面的C语言代码,它的执行结果如下:由于...原创 2019-11-26 14:48:30 · 452 阅读 · 0 评论 -
const char *p,char const *p和char *const p区别
const char *p;先看p,根据优先级它和*结合,是指针,指向char类型,但是char前面有一个const修饰,所以p所指向的内容为const类型不可修改。char const *p;由于没有const *的运算(const不可能修饰*),若出现const *的形式,则const实际上是修饰前面的,所以char const *p和const char *p一样。char ...原创 2020-02-20 17:50:57 · 500 阅读 · 0 评论 -
heap算法函数—make_heap、push_heap、pop_heap和sort_heap
C++的STL提供了make_heap、push_heap、pop_heap、sort_heap等算法,它们用来将一个随机存储的数组或者容器等转换为一个heap。这里所说的转换为heap意思是将原来的存储顺序改变,将转换成的堆层序遍历后所得到的元素顺序作为数组或者容器新的元素顺序(实质上就是对原来的数据用一个算法换了一下元素顺序)。1、make_heap()函数声明:template <...原创 2020-02-29 21:43:30 · 1606 阅读 · 1 评论 -
基于范围的for循环
在C++98中如果要遍历一个数组,可以按照以下方式进行:int main(){ int array[] = {1, 2, 3, 4, 5}; int *p = NULL; for (p = array; p < array + sizeof(array)/sizeof(array[0]); ++p) cout << *p << endl; return...原创 2020-03-01 15:58:01 · 526 阅读 · 0 评论 -
C++:explicit关键字
构造函数不仅可以构造与初始化对象,对于单个参数的构造函数,还具有类型转换的作用。class Date{public: Date(int year) :_year(year) {}private: int _year; int _month: int _day;};int main(){ Date d1(2018); // 用一个整形变量给日期类型对象赋值 // 实...原创 2020-03-04 15:19:43 · 96 阅读 · 0 评论 -
模拟实现优先队列(仿函数的介绍)
自从学过数据结构中的堆以后每次想到大堆和小堆的代码就很头疼,最近学了优先队列(priority_queue)后,发现模拟实现优先队列正好用到了大堆小堆的知识,在这里记录一下加深记忆,同时方便以后查看。模拟实现代码如下:namespace my_space{ template<class T> struct less { bool operator()(const T&a...原创 2020-03-05 19:43:29 · 303 阅读 · 0 评论 -
STL的六大组件
STL的六大组件如下:六大组件的关系如下:原创 2020-03-05 23:04:03 · 188 阅读 · 0 评论 -
getline()、cin.get()和cin.getline()的使用方法
一:getline()#include <iostream>#include <string>int main (){ std::string name; std::cout << "Please, enter your full name: "; std::getline (std::cin,name); std::cout <&...原创 2020-03-08 13:03:01 · 740 阅读 · 1 评论 -
C++中不能被重载的运算符总结
在C++中,有5个不能被重载的运算符,为了方便记忆和查看,总结如下:1、.(点运算符,成员访问运算符)2、::(域运算符)3、.*(点星运算符,成员指针访问运算符)4、?:(条件运算符)5、sizeof(长度运算符)...原创 2020-03-20 22:33:24 · 856 阅读 · 0 评论 -
分析“函数返回一个对象”的情景
写看如下代码:#include <iostream>using namespace std;class B{public: B() { cout << "default constructor" << " "; } B(int i) : data(i) { cout << "constructed by parameter...原创 2020-03-25 20:39:46 · 273 阅读 · 0 评论