随笔分类 -  C++

C++学习
摘要:首先记得 #include < algorithm > 在vector中使用 lower_bound作用 在 非递减序列中 找到 第一个大于或者等于 某个元素的位置,如果找得到,返回相应的迭代器,否则,返回范围中的尾迭代器。 使用示例 vector<int> nums = { 3,2,4,1,5 } 阅读全文
posted @ 2021-08-15 14:20 nullxjx 阅读(594) 评论(0) 推荐(0)
摘要:今天做到一道题,用到了**堆(heap)**这种数据结构。之前学数据结构的时候自己也实现过,但是刷题的时候还是无脑用STL吧😂。 然后我就突然发现自己从来没用过STL里面的堆,于是在这里记一下基本用法,免得后面又去网上搜。 我们先定义一个数组 vector<int> nums = {3,2,3,1 阅读全文
posted @ 2021-01-21 23:03 nullxjx 阅读(567) 评论(0) 推荐(0)
摘要:今天记录一下用DFS和回溯法实现走迷宫问题,输出一个迷宫中从起点到终点的所有可能的路径。 迷宫我们用一个二维的字符数组表示,其中的0表示路,1表示墙。 为了方便起见,我们从txt文件中读入这个数组,txt文件中的内容如下所示: 接下来我们写一下从文件中读入这个数组的代码: 1 vector init 阅读全文
posted @ 2020-11-22 17:41 nullxjx 阅读(710) 评论(0) 推荐(0)
摘要:在学习数据结构中的二叉树的时候,我们一般是用二叉链表去表示一棵二叉树。 二叉树有很多操作,例如遍历、线索化、插入结点和删除结点等,很多时候,我们不能直观地看到二叉树的结构,因而可能不确定自己的代码正确与否,所以我们经常需要把二叉树的结构打印出来。 然而由于二叉树是分层的结构,直接在控制台打印并不容易 阅读全文
posted @ 2020-11-21 18:08 nullxjx 阅读(776) 评论(0) 推荐(0)
摘要:本文以我的本科毕设(基于Qt的聊天软件)为例,讲一下如何在控制台编译Qt程序,并打包发布。 #控制台编译过程 1.在win10开始菜单找到以下内容,点击打开控制台 2.切换到项目所在目录 其中我的项目整体结构如下: 3.写好项目的pro文件,例如,我这个项目的pro文件如下所示: # # # Pro 阅读全文
posted @ 2020-10-13 16:16 nullxjx 阅读(744) 评论(0) 推荐(0)
摘要:距离上次写完哈夫曼编码已经过去一周了,这一周都在写huffman压缩解压,哎,在很多小错误上浪费了很多时间调bug。其实这个程序的最关键部分不是我自己想的,而是借鉴了某位园友的代码,但是,无论如何,自己也是思考,学习,调试了很久,慢慢地清除了一个一个bug。一周的课后时间都花在这上面了,学习了一点东 阅读全文
posted @ 2017-04-11 20:21 nullxjx 阅读(4360) 评论(0) 推荐(0)
摘要:最近在写哈夫曼压缩,遇到了一个比较让人头疼的问题,那就是对文件的读写操作,尤其是以二进制的形式来读写,无奈C++Primer第五版上写的并不详细,很多让人困惑的地方没有涉及或者没有讲清楚。于是这几天我一直在网上看了很多这方面相关的文章,同时自己也在电脑上试了很多,觉得理解了不少,很多困惑也迎刃而解。 阅读全文
posted @ 2017-04-07 19:18 nullxjx 阅读(36019) 评论(0) 推荐(4)
摘要:本讲基本要求 * 掌握:命名空间的作用及定义;如何使用命名空间。 * 了解:使用早期的函数库 重点、难点 ◆命名空间的作用及定义;如何使用命名空间。 在学习本书前面各章时,读者已经多次看到在程序中用了以下语句: using namespace std; 这就是使用了命名空间std。在本讲中将对它作较 阅读全文
posted @ 2017-02-26 16:54 nullxjx 阅读(542) 评论(0) 推荐(0)
摘要:一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separatecompilation)。也就是说,一个程 阅读全文
posted @ 2017-02-26 14:43 nullxjx 阅读(525) 评论(0) 推荐(0)
摘要:1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector<int>::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector<int>定义的iterator类型。(2) 阅读全文
posted @ 2017-02-19 12:33 nullxjx 阅读(423) 评论(0) 推荐(0)
摘要:C++最原始的容器之一是数组。数组的特点有: 1.大小固定 2.单独存在的数组建立在栈上,作为对象成员存在的数组建立在堆上还是栈上则要看作为宿主对象是被建立在堆上还是栈上。栈空间是有限的,所以如果数组在栈上,则不能容纳太多元素,否则会导致stack overflow。 C++最原始的容器之二则是用一 阅读全文
posted @ 2017-02-19 12:31 nullxjx 阅读(349) 评论(0) 推荐(0)
摘要:使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突。在C++中,变量、函数和类都是大量存在的。如果没有命名空间,这些变量、函数、类的名称将都存在于全局命名空间中,会导致很多冲突。比如,如果我们在自己的程序中定义了一个函数toupper(),这将重写标准库中的toupper()函 数,这是因 阅读全文
posted @ 2017-02-18 15:54 nullxjx 阅读(239) 评论(0) 推荐(0)
摘要:有没有人尝试过将负数赋给一个无符号整型变量?知不知道这样做会发生什么?还没有尝试的就让我们来探索下无符号整型隐藏的秘密。 先来看看下面代码: int main(){ unsigned int val = -1; cout<<val<<endl; return 0;} 执行的结果: 429496729 阅读全文
posted @ 2017-02-17 19:07 nullxjx 阅读(1941) 评论(1) 推荐(3)
摘要:ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char。char相当于signed char或者unsigned char,但是这取决于编译器!这三种字符类型都是按照1个字节存储的,可以保存256个不同的值。不同的是取值范围。signed char取值范 阅读全文
posted @ 2017-02-17 18:30 nullxjx 阅读(681) 评论(0) 推荐(0)