![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 94
带你去网吧里偷耳机
这个作者很懒,什么都没留下…
展开
-
C++学习2022
2 future:5 forward完美转发。6 move8 左值引用和右值引用表达式和函数对象包装器.原创 2022-09-18 15:49:11 · 450 阅读 · 1 评论 -
C++基础知识(2)
一 C++内存分区二指针&引用指针和引用的区别:(1)指针和引用都是一种内存地址的概念,但是指针是一个实体,引用是一个别名。(2)指针指向一块内存,内容是所指内存的地址,指针的内容是可以改变的,有const与非const之分,甚至可以为空。sizeof得到的是指针类型的大小。(3)引用只是一个内存的别名,引用必须且只可以在定义时被绑定到一块内存上,后续不可以更改,也不为空,没有const与非const之分,sizeof得到的是它所代表对象的大小。(4)在参数传递时,指针.原创 2021-09-06 21:55:55 · 575 阅读 · 0 评论 -
C++基础知识(1)
C++面向对象三大特性封装,继承,多态封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可以信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。实例:将函数定义和函数声明放在不同的文件中。继承指可以让某个类型的对象获得另一个类型的对象的属性的方法。它原创 2021-09-06 21:01:17 · 338 阅读 · 0 评论 -
C++智能指针 shared_ptr/weak_ptr/unique_ptr/enable_shared_from_this
智能指针C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存。智能指针实质是一个类对象,行为表现的却像一个指针。智能指针的作用是防止忘记调用delete释放内存和程序异常的进入catch块忘记释放内存。另外指针的释放时机也是非常有考究的,多次释放同一个指针会造成程序崩溃,这些都可以通过智能指针来解决。智能指针在C++11版本之后提供,包含在头文件<memory>原创 2020-06-27 17:05:12 · 398 阅读 · 0 评论 -
QT中使用SQLITE
转载 2020-04-23 10:55:36 · 151 阅读 · 0 评论 -
VS中使用JSONCPP:安装+使用
JSONCPP的下载安装和编译下载地址:https://sourceforge.net/projects/jsoncpp/JSONCPP的使用案例一:#include <iostream>#include <string>#include "json.h"int main(void){ std::string strValue...转载 2020-04-23 10:48:33 · 1007 阅读 · 0 评论 -
局部Static变量以及cout和printf小注意事项
最近面试时,被问到一个有关局部静态变量的问题:当时只隐约记得,static局部变量的生命周期直到程序结束为止。就答了个1,1面试结束后,赶紧找出之前的笔记。果然,知识记了一半和没记是没有区别的。然后自己重新思考了答案,应该是1,2结果vs上执行了之后答案是2,1。死活都是2,1后来在同学的提示下,才知道如果cout或者prinf连续输出多个函数/表达式的返回值时是按照从...原创 2020-03-10 21:43:07 · 230 阅读 · 0 评论 -
Sizeof和Strlen
Sizeof指针类型的sizeof数组类型的sizeof结构类型的sizeof也有可能会加上#pragama pack(n)来指定内存对齐的位数与Strlen的区别:...原创 2020-03-10 17:46:47 · 103 阅读 · 0 评论 -
二进制字符串模5的值(有限状态机法)
C++实现#include <iostream>#include <string>using namespace std;int Solve(string& str){ int StateSet[5][2] = { {0,1}, {2,3}, {4,0}, {1,2}, {3,4} }; int c...转载 2020-03-05 22:28:13 · 678 阅读 · 2 评论 -
memmove和memcpy函数的区别及实现
转载 2020-02-11 15:31:17 · 97 阅读 · 0 评论 -
Windows平台UDP双向通讯
关于在VS下进行Windows的UDP通讯的配置问题参见博客双向通讯的Cli一方:#include <Winsock2.h>#include <stdio.h>#include <string.h>#pragma comment(lib, "ws2_32.lib")int main(int argc, char* argv[]){ WO...原创 2020-01-07 14:49:57 · 261 阅读 · 0 评论 -
Windows下安装并使用Protocol Buff详细教程
Protobuff下载要在Windows下使用Protocol Buff,需要下载2个压缩文件下载地址对于CPP编程来说下载CPP版本的,其它语言可找到对应版本。下载完之后,解压至相应位置。1 先安装win32那个。具体操作:参考博客至于如何编写.proto文件,可以参考博客。这里需要注意,proto3与proto2的区别(1)required关键字已经被抛弃...原创 2019-12-29 18:50:28 · 1241 阅读 · 0 评论 -
Windows平台实现心跳机制
背景最近在做毕业设计,需要用到一些windows中节点通讯(UDP/TCP套接字通讯)以及节点间心跳检测的知识,之前没有学过,看了几篇博客,并结合最近看的关于UNIX下套接字编程的理论(很幸运有些函数和理论同样适用于windows)Windows下节点间UDP通讯参考博客上边链接中的博客在运行的时候会出现一些bug,需要对自己的VS运行环境稍作修改,具体操作见:参考博客1参...原创 2019-12-29 10:00:43 · 1394 阅读 · 0 评论 -
C++读写txt文件/C++生成随机数/C++记录程序运行时间
一 C++读写txt文件写入txt文件:参考博客逐行读取txt文件: ifstream in; in.open("sample.txt", ios::in); if (!in.is_open()) return 0; string strLine; double data; ResultSet resultset; while(getline(in,strLine...原创 2019-11-27 10:36:33 · 631 阅读 · 0 评论 -
C++中URL解码/编码
#include <iostream> #include <string>using namespace std;char dec2hexChar(short int n) { if (0 <= n && n <= 9) { return char(short('0') + n); } else if (10 <= n ...原创 2019-08-12 16:39:59 · 856 阅读 · 0 评论 -
求一个数组的最大公约数和最小公倍数
求一个数组的最大公约数可以先选择前2个数求出他们的最大公约数,然后遍历数组,依次把最大公约数和数组元素求最大公约数,当局部最大公约数为1时,返回1即可。#include <cstdio>#include <vector>#include <iostream>#include <string>#include <sstream&...原创 2019-04-24 22:52:06 · 4251 阅读 · 0 评论 -
scanf与正则表达式
链接1链接2实例1 提取出ip地址#include <cstdio>#include <iostream>using namespace std;int main(){ const char *url= "<sip:tom@172.18.1.133>"; char ip[20]={0}; sscanf(url,"...原创 2019-04-24 09:08:16 · 504 阅读 · 0 评论 -
手写string类
#include <iostream>#include <cstdio>#include <cstring>using namespace std;class string_hui{private: char *str; int len;public: string_hui(); string_hui(cons...原创 2019-04-26 14:26:51 · 241 阅读 · 0 评论 -
STL中的sort函数和algorithm中的sort函数
笔试阿里的时候搞到我了,一直想着对list用之前的sort排序,结果一直报错。。。(1)vector的迭代器是随机访问迭代器,支持泛型算法的sort及其算法。可以使用STL中的sort。//vector排序#include <iostream>#include <string>#include <vector>#include <algo...原创 2019-04-12 22:10:32 · 267 阅读 · 0 评论 -
编程陷阱
1关于在C语言中不可以用常量变量(const)来定义数组维数的问题(C++中是可以的),我们可以用宏(define)或枚举(enum)来解决。const int size=5;int a[size]; //这是不允许的,在C中(在C++中可以)//我们可以用#define来代替#define SIZE 5int a[SIZE];//我们也可以用枚...原创 2019-01-11 22:42:36 · 191 阅读 · 0 评论 -
牛客错题集C++(一)
题目一 类的构造与析构函数#include <iostream>using namespace std;class A{private: static int a,b;public: A() { a++; cout<<"A调用构造函数: "<<a<<endl; ...原创 2019-01-14 22:19:16 · 347 阅读 · 0 评论 -
C++中STL详解(一)
一 vectorVector通常叫做变长数组或长度根据需要而自动改变的数组。要使用vector需要添加头文件#include <vector>并在头文件下面添加语句using namespace std;1 vector的定义//单独定义一个vectorvector<typename> name;这其实是定义了一维数组,只不过数组长度...原创 2019-01-20 10:08:07 · 830 阅读 · 0 评论 -
C++中STL详解(二)
一 setset翻译为集合,是一个内部自动有序且不含重复元素的容器。1 set的定义#include <set>using namespace std;set<typename> name; //typename可以为任何基本类型也可以为容器类型//set的数组定义set<int> a[100]; //a[0]-a[99]中...原创 2019-01-27 15:32:58 · 238 阅读 · 0 评论 -
多态和虚表
多态多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码: //例程1 #include &lt;iostream&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using namespace std;&nbsp;&nb...转载 2019-03-03 08:58:29 · 123 阅读 · 0 评论 -
为什么构造函数不能声明为虚函数,析构函数可以
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的...转载 2019-03-03 09:00:51 · 103 阅读 · 0 评论 -
可能是求质数最高效的算法
这标题,怎么感觉好像有点震惊体的意思了。先上代码: C++版:#include <iostream>using namespace std;int prime(int n);int main() { prime(100); return 0;}int prime(in...转载 2019-03-03 11:20:18 · 318 阅读 · 0 评论 -
求素数
需求一般情况下,求素数,会有2种需求:1 求出1-N之间的所有素数。2 求出自然数的前N个素数。普通需求的几种解法1 遍历法即如果要判断数字N是不是素数(只被1和自己整除的数,1除外)。只需要遍历2-N-1看看数字是否被他们任意一个整除即可。#include <cstdio>bool is_prime(int n){ bool res=tru...原创 2019-03-03 11:40:46 · 129 阅读 · 0 评论 -
回溯法详解
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的...原创 2019-04-04 11:41:18 · 480 阅读 · 0 评论 -
String类以及删除字符串中的子串
String类#include <string>using namespace std;string可以通过下标访问也可以通过迭代器访问。string可以进行拼接,用+即可,也可以加上一个字符。string可以进行比较,== != < > <= >=,按照字典序进行。string通过length()或size()来返回长度。...原创 2019-04-06 22:22:44 · 3820 阅读 · 2 评论 -
剑指offer:替换空格
题目:实现一个函数,把字符串中的每个空格替换为"%20"。例如。输入“we are happy.”,输出"we%20are%20happy."。最直接的思路是把每个空格替换之前,都把空格之后的所有字符整体向后移动2个位置,在空格处填充%20即可。但每次都要重新往后整体移动,算法复杂度太高。可以先遍历得到空格的个数,然后在字符串的末尾补上相应的空格数。然后用2个指针p1,p2分别记录原来字符...原创 2019-04-07 18:51:20 · 107 阅读 · 0 评论 -
位图法的代码
一 简介所谓bitmap就是用一个bit位来标记某个元素对应的value值,而key就是该元素。由于采用了bit为单位来存储数据,可大大节省空间。二 Map映射bitmap中一个比特代表一个数字,1个int有32个bit,那N个数据需要N/32个int空间,所以需要申请的内存空间大小为int a[1+N/32],其中a[0]在内存中占32,可以对应十进制数为0-31,以此类推:a[1]...原创 2019-04-07 19:23:54 · 390 阅读 · 0 评论 -
topK问题
剑指offer最小的k个数法一:快速排序注意partition函数的vector要加引用,同时需要判断数组长度和k的大小。时间复杂度为O(n),但会修改数组class Solution {public: int Partition(vector<int> &input,int start,int end) { ...原创 2019-03-29 11:36:36 · 113 阅读 · 0 评论 -
C++输入输出问题
对于不确定输出个数的数组类型数据vector<int> res;for(int i=0;i<res.size();i++){ if(i!=res.size()-1) cout<<res[i]<<endl; else cout<<res[i];}当输入为一行不确定数目的整数,整数...原创 2019-04-03 17:06:16 · 290 阅读 · 0 评论 -
C++类的特殊成员-默认/拷贝/移动构造函数
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...转载 2018-10-21 20:57:34 · 401 阅读 · 0 评论