
C/C++ 杂谈
文章平均质量分 53
一些学习笔记
_刘小雨
一枚普通而~~~
展开
-
ubuntu 中 libwebsockets 库 编译与测试
https://blog.youkuaiyun.com/cgs1999/article/details/89704467转载 2022-05-08 21:10:58 · 470 阅读 · 0 评论 -
C++ string 初始化为nullptr引发异常问题
最近看到一个问题,问题实际是在项目中类的成员变量中遇到的,简化如下#include <iostream>#include <string>int main(){ std:: string s = nullptr; std::cout << "nihao" << std::endl; return 0;}以上代码在项目能正常编译通过,但运行的时候直接崩溃。因为之前自己从来没有用nullptr 初始化string 的,看到这里记录下,防止别原创 2022-01-06 20:22:13 · 3194 阅读 · 2 评论 -
VSCode解决头文件报红问题
在服务器中已经安装好了C/C++ 扩展了,但写文件时候还是会报红,关键编译时候没有出错,本着强迫症患者,记录一下解决方案。点击VSCODE 文件–》首选项–>设置; 在上面输入settings 查找3. 将下面过滤文件的改为false4. 点击这个文件5. 然后在linux服务器中输入gcc -v -E -x c++ -6. 然后将上面框框中加入之前的文件中,注意后面需要加上/**7. 接下来就可以了。......原创 2021-11-11 23:01:27 · 12435 阅读 · 0 评论 -
do.....while(0)用法
在c中,我们遇到的有三种循环语句:for, while和do…while,最近在看一些别人写的代码时候,遇到了do…while(0),当时十分不理解,为什么要这样子做。下面说一下为什么要用到do…while(0)消除代码的冗余避免使用goto语句解释1:我们在写程序的时候,在一个函数中如果遇到需要判断情况的,有时动不动需要判断几个参数,或者我们的代码像下面这样子。bool Execute(){ // 分配资源 int *p = new int; bool bOk(true原创 2021-05-31 21:26:41 · 1292 阅读 · 0 评论 -
在main函数前面执行的函数
/************************************************************************//* 1.使用attribute关键字,声明constructor和destructor函数(gcc中,注意:vc中不支持attribute)2.通过段名称“.CRTXIU”,“.CRTXCU”把函数放在“C/C++初始化函数表”中3.利用全局对象的构造函数会在main函数之前执行的特点*//****************************原创 2021-02-08 20:59:38 · 1101 阅读 · 0 评论 -
libevent的环境搭建
本栏目的所有操作均在windows10 + vs2017 和vs2019上完成过。 若出现任何问题可留言咨询。zlib : zlib-1.2.11编译zlib首先在vs2017 下的x64_x86交叉工具命令执行编译: nmake /f WIN32\Makefile.msc --> 这是目录中会生成zdll.lib文件(动态库)和zlib.lib文件(静态库)批处理文件.bat编译openssl:3. 依赖环境: perl (直接点击下一步就行)、nasm (需要将安装后.原创 2020-09-30 17:43:36 · 480 阅读 · 0 评论 -
项目中release编译提示 无法找到.exe的调试信息或者调试信息不匹配,未使用调试信息生成二进制文件,是否继续调试 的解决方案
目前我在项目中使用的环境vs2013+qt 5.8(不过其他环境对于这个问题我认为影响不大,都能适用吧)我是在vs2013中的debug调试时正常的,然后要用到release发布版本的时候,遇到问题了,出现这个问题后直接影响到生成的执行程序的效果。我的解决方案如下:需要改动项目的属性。 下面给出了两个语言版本。 (项目属性直接在项目名称那里右键可以看到)english versionconfiguration properties->linker->Generate De.原创 2020-06-29 20:04:40 · 1638 阅读 · 0 评论 -
ERROE RC2144 错误,解决方法之一(实测有效)
最近在调试项目的时候,突然遇到了error rc2144的两个错误,一点开一看,是项目中的库文件的,我心想,我都没改,是哪里的问题啊。 最后在google 的帮助下,试了下面的方法, 就调试成功了,现在记录下,以防后期所需。可以直接在#include "resource.h"下面直接加上#include<winresrc.h>, 目前我也不知道什么意思,现在照这来就行了,后期有需要在深入吧。后面可能需要注释.rc文件中的这一行代码LANGUAGE LANG_CHINESE, SUB.原创 2020-06-21 23:00:44 · 1201 阅读 · 1 评论 -
用指针拼接两个字符串
今天6月1号,儿童节,偶然看到一个用指针拼接两个字符串,先来无事,写下代码。#include <iostream>char* myfunc(const char* str1, const char* str2){ char* str = new char[strlen(str1) + strlen(str2)+1]; strcpy(str, str1); strcat(str, str2); return str;} int main(){ const char* .原创 2020-06-01 23:24:19 · 2460 阅读 · 1 评论 -
QT解决qt.network.ssl问题,最详细的版本(外加解析json数据)
qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed在qt上用QJson解析数据,遇到上面的错误,困扰了几天,最开始时上面的错误报好多类似的问题,反正后来随便捣鼓就变成了上面一个错误了。首先说下我遇到错误后,也差了很多资料,很多人也只是说说将C:\QT\Tools\QtCreator\bin(前面的根据自己的qt安装路径, tools后不变的)文件下的libeay32.dll和ssleay32.d.原创 2020-05-31 00:07:05 · 3428 阅读 · 0 评论 -
掌握基础,需时刻重复记忆---呕心沥血整理出来的笔记
记录一下我的基础知识点,以后可以时不时的拿出来过一遍,瞧一瞧。C++的基础知识:几种排序是必须掌握的。插入排序直接插入O(n2)稳定shellO(n1.5)不稳定选择排序直接选择O(n2)不稳定堆排序O(nlogn)不稳定交换排序冒泡排序O(n2)稳定快速排序O(nlogn)不稳定—归并.........原创 2020-04-18 23:30:19 · 377 阅读 · 0 评论 -
【剑指offer】面试题27-二叉树的镜像(强调非递归解法)
题目: 待续中。。。思路:1.原创 2020-04-04 00:34:45 · 164 阅读 · 0 评论 -
【剑指offer】面试题11-旋转数组中的最小数字(二分法的进一步应用)
题目:待续中。。。思路:1.牛客网AC代码如下原创 2020-04-04 00:32:48 · 208 阅读 · 0 评论 -
【剑指offer】面试题10-裴波那契数列(不要小看简单的题,递归完爆你)
题目:待续中。。。思路:牛客网AC代码如下原创 2020-04-04 00:31:27 · 248 阅读 · 0 评论 -
【剑指offer】面试题9-用两个栈实现队列(自己画图,“丰衣足食”,理解更到位)
class Solution{public: void push(int node) { } int pop() { }private: stack<int> stack1; stack<int> stack2;};思路:牛客网AC代码如下...原创 2020-04-03 00:40:54 · 238 阅读 · 0 评论 -
【剑指offer】面试题8-二叉树的下一个节点(图文描述清晰明了)
下面的next是节点的父节点信息,不要看漏了。(我第一次看了半天~~~)struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *next; // 这个next是指向父节点的,这里差点看漏了 Tree...原创 2020-04-02 23:56:59 · 225 阅读 · 0 评论 -
【剑指offer】面试题6-从尾到头打印链表(栈和递归的解法)
此题书上是要求直接打印链表的中的每个节点的值,返回的void。我写的blog都是按照牛客网上的题,记录做题思路的。有些许差别没有多大影响,读者注意一下就好。思路:解法一: (利用栈)栈的特点是先进后出,所以我们只需将链表从头到尾遍历一遍,一次的放到栈中,然后从栈中取出元素,即可满足题目要求。解法二: (利用递归)递归的思路就是遍历链表时,每次访问一个节点后,直接递归输出它的后面节点,...原创 2020-04-02 18:03:26 · 199 阅读 · 0 评论 -
【剑指offer】面试题5-替换空格(吐槽C++)
题目:思路:字符串的处理,一般向后扩容重新分配内存的,最好从尾部建立指针。指针当做数组,但指针本身不检查超出数组范围。字符串处理时刻注意到最后一个‘\0’字符先遍历一遍,得到空格总数,记录,因此得到替换后的总长度。建立两指针, 一个指向原始字符串尾部,一个指向替换字符串尾部向前遍历,逐一替换。牛客网AC代码如下class Solution {public: void...原创 2020-04-01 21:58:09 · 168 阅读 · 0 评论 -
【剑指offer】面试题4-二维数组中的查找(方格里面中找规律)
题目:思路:通过二维数组中的最右上角,或者是最左下角元素开始与目标数T对比,一层一层剔除即可。下面给出的是以从最右上角的元素开始的。如果元素比 T 大,则 从下方找,即剔除当前行,col–; 如果比T 小,则从左边找,即剔除当前列,即row++。牛客网AC代码如下class Solution {public: bool Find(int T, vector<ve...原创 2020-04-01 17:57:26 · 227 阅读 · 0 评论 -
【剑指offer】面试题3-数组中的重复数字 (我 “hash法” 没有开挂)
题目: 解法一:直接排序法直接用系统函数sort进行排序,然后在找相邻元素是否相同,即可找出所求答案。时间复杂度为sort的时间复杂度O(nlogn)解法二:hash大法主要思想是把每个数放在对应的位置上,即num[i] = i。首先检查数据是否异常然后遍历一遍,判断条件为当数字不在对应的位置上时,就需要更换它的位置,这时就需要考虑这个数到底该放到哪里。利用数组可以用下标访问...原创 2020-04-01 17:16:10 · 325 阅读 · 0 评论 -
【剑指offer】面试题2-实现Singleton模式(解决懒汉式的线程问题)
题目: 手撕单例模式思路:构造函数私有化一个静态成员变量,私有的,一个公有的成员函数,在函数内创建实例初始化类中静态成员变量Singleton实现如下:class Singleton {private: Singleton() { cout << "Singleton 构造函数执行" << endl; }public: static Sing...原创 2020-04-01 13:08:19 · 200 阅读 · 0 评论 -
【剑指offer】面试题1-赋值运算符函数 (开门大吉,需要掌握)
题目: 如下为类型CMyString的声明,请为该类型添加赋值运算符函数class CMyString{public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(void);private: char* m_pData;};注意点:1.返回值的类型声明为...原创 2020-04-01 12:49:19 · 196 阅读 · 0 评论 -
【剑指offer】面试题21-调整数组顺序使奇数位于偶数前面
题目: 略思路: (书上的题目中没有奇数和技术,偶数和偶数保持相对顺序这一条件)直接用类似快排的思想, 用双指针进行数值交换,从而达到目的。书上可AC的代码如下// 牛客网上有保持相对顺序条件,所以这个代码不能通过class Solution {public: void reOrderArray(vector<int> &array) { ...原创 2020-03-31 23:21:25 · 182 阅读 · 0 评论 -
【剑指offer】面试题22-链表中倒数第k个节点
题目: 略思路:由于链表没有下标操作,所以我们需要从头开始遍历。遍历也有两种方法。解法一:找到总长度第一次遍历,得到总长度n直接找到链表中的第n-k+1个节点,就是倒数第k个节点。时间复杂度为O(n)解法二: 使用双指针使用第一个指针先走k步然后两个指针同时走,到第一个指针到达链表末尾,第二指针所指向的节点就是需要找的答案。牛客网AC代码如下/*struct Lis...原创 2020-03-31 21:01:43 · 218 阅读 · 0 评论 -
【剑指offer】面试题7-重建二叉树 (递归和哈希)
题目: 略思路:前序遍历的首节点总是根节点,但是在中序遍历中,根节点是将左子树和右子树分开的。前序遍历是根左右,不能通过前序遍历判断左右子数的数量,但是可以通过中序遍历判断左右子树的数量。分别确定根节点,左子树,右子树的数量后,在按照递归的方式构建二叉树。牛客网AC代码如下/** * Definition for binary tree * struct TreeNode {...原创 2020-03-31 17:25:03 · 195 阅读 · 0 评论 -
C++复习03---文件操作写入和读取
// 写相应的东西到指定的目录中,并查询文件中的信息void test03() { ofstream writefile; writefile.open("D:\\VS code\\book.txt"); // 这样的绝对路径可以识别 writefile << "C++程序设计" << " " << "xiaoxiao" << ...原创 2019-10-31 22:24:27 · 232 阅读 · 0 评论 -
C++复习02---union测试
//测试union是公用内存的union test { int k; struct { int a; int b; int c; }tt;}bb;void unionTest(){ bb.tt.a = 1; bb.tt.b = 2; bb.tt.c = 3; cout << bb.tt.a << bb.tt.b << bb.tt.c &l...原创 2019-10-15 10:38:14 · 262 阅读 · 0 评论 -
map的简单用法
map 顾名思义就是地图,包含key和value当需要快速获取key和value的时候,就可以用map了首先,我给出基本的用法插入数据的代码:1.map mapStudent;mapStudent.insert(pair(1, "student_one"));mapStudent.insert(pair(2, "student_two"));mapStud原创 2018-03-29 16:38:22 · 210 阅读 · 0 评论 -
C++面试经典题
1,关于动态申请内存答:内存分配方式三种:(1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变量。(2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算 内置于处理器的指令集中,效率很高,但是分配的内存容量有限。转载 2018-03-17 21:15:28 · 240 阅读 · 0 评论 -
在C++中的友元函数进一步理解
这里重新将类的成员函数的定义看一下:百科上的认识:类的成员函数的原型要写在类体中,原型说明了函数的参数表和返回值类型。而函数的定义一般在类外面,也可以直接在类内部定义。前者与普通函数不同的是,实现成员函数时要指明类的名称,具体形式为:返回值类型 类名 ::函数成员名(参数表){函数体};而后者一般为一些短小的函数(5行以内),也就是内联函数。这里在百科上对友元函数的解释: 友元函数是...原创 2018-03-17 21:02:53 · 281 阅读 · 0 评论 -
顺序链表用C++实现
这是创建的LIst.h头文件#ifndef LIST_H#define LIST_Hclass List{public: List(int size); ~List(); void DestroyList(); void ClearList(); bool ListEmpty(); int ListLength(); bool GetElem(int i, int *e); int LocateE...原创 2018-03-17 20:45:05 · 3397 阅读 · 0 评论 -
二级C考试的重要知识点
下面是概念题分析:1. 程序流程图:在程序流程图中,用标有名字的箭头表示控制流;Ps:在数据流图中,用标有名字的箭头表示数据流。2. 结构化程序设计的思想包括:自顶向下,逐步求精,模块化,限制使用goto语句,(不包括多态性)3. 软件设计中模块划分应遵循的准则是 高内聚低耦合4. 在软件开发中:可行性分析阶段产生可行性分析报告;原创 2017-10-05 19:23:32 · 579 阅读 · 0 评论 -
关于C语言中的E-R图-------详解
E-R图-----详解E-R 英文缩写为(Entity Relationship Diagram)也称实体-联系图。提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。下面就讲详解e-r图,如下:从上面的的图可以看到一个完整的e-r图有四个部分:1.矩形框,矩形表示实体型,矩形框内写明实体名;2.椭圆框,椭圆表示实体的属性,并用无向边将其与相应的原创 2017-08-24 11:17:39 · 5427 阅读 · 0 评论 -
C++概念之————继承
一、概念 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。 当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。 继承代表了 is a 关系...转载 2018-05-30 15:03:41 · 164 阅读 · 0 评论 -
C++之多态篇
1 多态: 多态是指同样的消息被不同类型的对象接收时导致的不同行为。这里的消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。在程序中经常遇到这样的情况,例如同样的“+”,就可以实现整型数之间,浮点数之间,双精度浮点数之间的运算。 2 多态的类型: 面向对象的多态性可以分为4类: 专用多态: (1)重载多态:普通函数以及成员函数...原创 2018-05-31 14:01:54 · 184 阅读 · 0 评论 -
const用法全面介绍
1. const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。2. const 修饰类的数据成员。 ...原创 2018-05-31 16:09:45 · 641 阅读 · 0 评论 -
C++STL05---stack容器和queue容器
stack容器1.先进后出2.压栈--push()3.出栈--pop()4.取栈顶元素--top()5.不提供迭代器---不能遍历,不支持随机存储访问的话,下面给出遍历的例子While(!stack.empty()){ Cout<<stack.top()<<endl; Stack.pop();}queue容器1.一端插入另一端删除...原创 2019-03-24 19:59:03 · 177 阅读 · 0 评论 -
C++STL07---Set/multiset容器
说道set/multiset容器,就不得不说二叉树了。二叉树:二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。平衡二叉树:又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉...原创 2019-03-25 20:17:00 · 351 阅读 · 0 评论 -
C++ C 中的关键字集合
这里常见的就不写用法了,放在这里只是好记一点。先弄C++的,看下图先说比较少用的1.asm: (指令字符串)允许在 C++ 程序中嵌入汇编代码2.const:这个不算少见,解释(常量的,constant)所修饰的对象或变量不能被改变,修饰函数时,该函数不能改变在该函数外面声明的变量也不能调用任何非const函数。在函数的声明与定义时都要加上const,放在函数参数列表的最后...原创 2019-03-26 18:20:02 · 589 阅读 · 0 评论 -
C++STL03---Vector容器
1.动态数组,可变数组,是一个连续的内存空间2.vector容器,称为单口容器3.实现动态增长:当插入新元素的时候,如果空间不足,那么vector会重新申请更大的一块内存空间,将原来空间数据拷贝到新空间,释放旧空间的数据,在把新元素插入新申请的空间里。问:reserve和resize的区别?答:reserve是容器预留的空间,但在空间内不是真正创建元素对象,所以在没有添加新的对象之...原创 2019-03-23 21:10:30 · 151 阅读 · 0 评论