![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 89
C++
舒泱
一切都是最好的安排
展开
-
【C++代码】用数组链表存储无向加权图、有向加权图,小白都能看懂
先上C++代码:无向加权图:顶点与顶点之间的连接关系是没有方向的,只有连接和原创 2021-05-18 11:42:10 · 1081 阅读 · 0 评论 -
【C++代码】设计模式之简单工厂模式(无内存泄漏)
简单工厂模式的UML类图如下,其中MyVirtualProduct是抽象类,MyProduct1、MyProduct2、MyProduct3继承于MyVirtualProduct,表示实际的产品。SimpleFactory是工厂类,在工厂类中,负责根据客户端传入的产品类型去生产具体的产品。 简单工厂模式C++代码如下:// 枚举类型,目前原创 2020-11-24 10:48:46 · 507 阅读 · 0 评论 -
【STL】关联容器之unordered_map用法总结
一、基本原理 unordered_map是C++标准库提供的关联容器之一,保存的是键值对(key-value),我们可以通过key快速查找到其对应的value。unordered_map底层使用的数据结构是哈希表(hash table),因此在unordered_map中查找、添加或删除元素时间复杂度都是常数时间O(1)。此外,unordered_map中的元素是无序的。  原创 2021-01-05 16:13:21 · 3347 阅读 · 0 评论 -
【STL】关联容器之map用法总结
一、基本原理 map是C++标准库提供的关联容器之一,保存的是键值对(key-value),我们可以通过key快速查找到其对应的value。map底层使用的数据结构是红黑树,因此在map中查找、添加或删除元素时间复杂度都是O(log(n))。此外,map中的元素还是有序的。 map使用场景: &nbs原创 2021-01-04 20:20:04 · 658 阅读 · 0 评论 -
【STL】pair用法总结
在学习关联容器之前,我们需要先了解名为pair的标准库类型。 一个pair保存两个数据成员,第一个成员是first,第二个成员是second。有什么用途呢?比如一个学生的学号和姓名,这两个属性是关联的,那我们就可以用pair来保存。原创 2021-01-04 10:04:53 · 2353 阅读 · 0 评论 -
【STL】容器适配器之stack、queue用法总结
一、基本原理 deque内部使用动态队列的方式实现的,这个队列的元素可以是基本数据类型(如int、char、double等),也可以是类类型(如C++容器库里的string,或者你自定义的类)的。 初始化时,deque会申请比当前要容纳元素所需的内存更大一块的连续内存,预留出空闲空间,用于之后存放新添加的元素,这样就不需要每添加一个新元素就重原创 2020-12-28 11:24:09 · 243 阅读 · 0 评论 -
【STL】顺序容器之deque用法总结
一、基本原理 deque内部使用动态队列的方式实现的,这个队列的元素可以是基本数据类型(如int、char、double等),也可以是类类型(如C++容器库里的string,或者你自定义的类)的。 初始化时,deque会申请比当前要容纳元素所需的内存更大一块的连续内存,预留出空闲空间,用于之后存放新添加的元素,这样就不需要每添加一个新元素就重原创 2020-12-21 16:14:27 · 726 阅读 · 0 评论 -
【STL】顺序容器之string用法总结
一、基本原理 vector内部使用动态数组的方式实现的,这个数组的元素可以是基本数据类型(如int、char、double等),也可以是类类型(如C++容器库里的string,或者你自定义的类)的。 初始化时,vector会申请比当前要容纳元素所需的内存更大一块的连续内存,预留出空闲空间,用于之后存放新添加的元素,这样就不需要每添加一个新元素原创 2020-12-17 21:27:50 · 313 阅读 · 0 评论 -
【STL】顺序容器之list、forward_list用法总结
一、基本原理 list是双向链表,forward_list是单向链表,在链表的任何位置添加或删除元素都很快,但是作为代价,这两个容器都不支持随机访问,为了访问容器中的某一个元素,我们只能遍历整个容器。 forward_list是C++新标准增加的类型,其设计目标是达到与最好的手写单向链表数据结构相当的性能,因此forward_list没有siz原创 2020-12-15 21:39:36 · 1440 阅读 · 0 评论 -
【STL】顺序容器之vector用法总结
标准库类型vector表示对象的集合,其中所有对象的类型都相同,集合中的每个对象都有一个与之对应的索引,索引用于访问对象。原创 2020-12-15 10:23:22 · 545 阅读 · 0 评论 -
error: call to non-static member function without an object argument
例如: // 在所选路径下创建文件夹 QDir::mkpath(地址);错误:调用不带对象参数的非静态成员函数。出现这个错误的原因是,类没有实例化,调用的mkpath函数需要先将类实例化,改成: QDir tempDir; //先实例化一个对象 tempDir.mkpath(projectDir);这样就对了。如果是自己写的类,还可以在类体中函数的声明前加上...原创 2019-08-19 08:59:55 · 41863 阅读 · 16 评论 -
图解C++多态,虚函数、虚函数表、虚指针、重写与覆盖
多态 多态就是多种形态,C++的多态分为静态多态与动态多态。 静态多态就是编译器根据函数实参的类型判断出要调用哪个函数。比如函数重载和函数模板。 动态多态依靠的是虚函数表和动态绑定机制,因为是在运行时根据对象的类型在虚函数表中寻找调用函数的地址来调用相应的函数,所以称为动态多态。 本文仅原创 2020-11-19 17:03:43 · 1914 阅读 · 13 评论 -
一个C/C++程序的一生:从源程序到可执行程序再到进程
1原创 2020-11-10 17:06:30 · 702 阅读 · 6 评论 -
C++2020年秋招面经
历时三个月的秋招结束啦,以下是楼主的面经,按时间记录的。 2020.06.30 招银网络提前批电话面1、 自我介绍2、 项目介绍4、 如何定义一个常量5、 const和define的区别6、 指针和引用7、 C++的内存管理机制8、 new和malloc申请的内存是在哪里,原创 2020-11-08 19:48:05 · 1028 阅读 · 3 评论 -
C++基础知识校招面试题,附答案
本篇博客记录近段时间博主为准备秋招面试收集的C++基础知识面试题。问题后都附上了我自己总结的答案,这个答案可能是书上找的,可能是我自己理解的(所以有错误的地方希望大家能指出来),可能是看了好些博客总结的,可能有的是别人博客里的原话(侵删,请联系我)。 本篇博客会持续更新,后面面试面得越多博客里收集的问题就越多啦。1、C++为什么要提出引用? 引原创 2020-07-01 10:18:58 · 4928 阅读 · 6 评论 -
成为一名C++后端开发工程师的学习之路
为了准备明年秋招,在网上看了大家推荐的各种书,总结了一下,学习书籍如下:安排:1) C++基础知识2) 算法与数据结构3) 设计模式4) 数据库5) 计算机网络6) 操作系统原理7) Linux系统8) 刷题9) 其他:开发工具、分布式与架构……1 C++基础知识1.1 《C++ primer》2 算法与数据结构2.1 《大话数据结构》3 设计模式3.1 《大话设计...原创 2019-09-23 10:05:18 · 5133 阅读 · 17 评论 -
C++ 伪随机数
思路 按照一定的规则打乱有序序列,既然要求每次运行的结果不同,打乱的规则里就需要用到随机数 。 伪随机数 伪随机数序列是用确定性的算法计算出来的遵循某种概率分布的序列,程序的运行过程是一个确定的过程,每一条指令都是确定, blue blue blue &n.原创 2020-09-20 22:57:16 · 2472 阅读 · 4 评论 -
用类的空指针调用非虚成员函数和虚函数
先来看下面这段代码:class A {private: int data;public: void fun1() { } virtual void fun2(){ }};int main() { A *p = nullptr; p->fun1(); p->fun2();} p是空指针,fun1()是普通成员函数,fun2(原创 2020-09-14 22:47:14 · 2202 阅读 · 2 评论 -
【C/C++】sizeof()和strlen()的区别
sizeof(x):返回x所占内存的大小,单位为字节,字符串数组后的’\0’也会被算进去。strlen(x):返回x中字符个数,字符串数组后的’\0’不会被算进去。 例一 char s[] = { 'a','b' ,'\0' }; cout << sizeof(s) << endl; // 输出3 cout << strlen(s) <<.原创 2020-09-12 11:55:09 · 366 阅读 · 0 评论 -
C++ static详解,类中的static用法
以下将从这几个方面来将static关键字特点:用来控制存储方式和可见性类中的static关键字什么时候用static?为什么要引入static?特点:用来控制存储方式和可见性① 存储空间:静态存储区(控制变量的存储方式) 静态变量存储在静态存储区(存储在静态存储区的变量,如果不显式地对其进行初始化,系统会将其初始化为0),在程序执行期间,对应的存储空间不会释放,一直到程序结束才会释放。 &nbs原创 2020-06-28 15:30:55 · 4991 阅读 · 1 评论 -
详解全局变量,全局变量与静态变量的区别
特点:① 作用域:全局可见。全局变量(外部变量)是在函数外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。② 存储空间:静态存储区系统会在编译时将全局变量分配在静态存储区,在程序执行期间,对应的存储空间不会释放,一直到程序结束才会释放。一个程序在内存中占用的存储空间可以分为3个部分:程序区(存放可执行程序的代码)、静态存储区(存放静态变量)、动态存储区(存放动态变量)。③ 优先度:全局变量优先度低于局部变量当全局变量和局部变量重名时,会屏蔽全局变量,局部优先。..优点:使用原创 2020-06-27 23:00:26 · 9215 阅读 · 0 评论 -
C++ string类的+与+=运算符
来说一说C++ string类的运算符+ 与 运算符 +=一、string对象的运算符+和运算符+=效率差很多string str,a;str=str+a;str+=a;以上两句str=str+a; 与str+=a;看起来差不多,其实效率差很多。今天在力扣上写代码,同一道题,同样的代码,差别就是我把str+=a;改成了str=str+a;运行时间翻了倍,如图:虽说力扣上的运行时间会有波动,但也不至于差别这么大,然后我去搜了好些博客看,有些博主实际运行验证了在string的使用中,使用+=比原创 2020-06-17 20:43:10 · 15569 阅读 · 16 评论 -
深入理解C/C++标准输入输出,cin、scanf、getchar()、文件结束符EOF等常见问题详解
问题1:为什么我用while(cin>>a)一直跳不出循环?(cin的">>"函数返回值是什么?)问题描述:《C++ primer》上也出现过类似如下代码,然后自己在控制台输入数据,一直输入都跳不出循环。int a;while(cin>>a){}原因:cin是一个类,没有返回值,while判断条件其实是在判断">>“函数的返回值。”>>“是一个被重载过的运算符,这个重载函数的返回值类型为istream&,返回值通常就是输入流ci原创 2020-06-15 11:32:34 · 1090 阅读 · 1 评论 -
C++ 指针与数组
博主在VS中写了各种数组与指针可能用到的语句,用调试器看了变量的值,总结画了图,但博主太懒了,不想码字。多维数组与指针上图上调试图上代码#include <iterator>using namespace std;int main(){ int ia[3][4] = {}; // 初始化数组元素 for (int i = 0; i != 4...原创 2019-10-15 21:21:22 · 271 阅读 · 0 评论 -
C++顶层const与底层const的详细总结,引用、指针与const的关系
直接上图,网页的表格换行麻烦,写出来格式也太丑了吧,还是看图比较清楚。1、顶层const(自己本身是常量)引用指针实际上没有常量引用这种东西,因为引用不是一个对象,我们没法让引用本身恒定不变。常量指针:指针本身为常量。 int a = 0; int *const p1 = &a;1) 指针本身为常量,初始化后,则指针的值(也就是存放在指针中的那...原创 2019-10-12 11:38:17 · 1417 阅读 · 0 评论 -
Qt 与 VS 中,各种数据类型转换总结
我在VS里封装好的类,在QT里直接调用的时候,遇到了很多类型转换问题。今天把int 型数据转换成 QString的时候,发现结果不对,翻看自己以前的程序,明明写过,于是赶紧写个博客,把目前遇到的各种数据类型转换记录下来。(1)QString 转 stringQString qstr = "待转换的字符串";// QString 型qstr 转 string型 strstring str=...原创 2019-09-17 19:58:57 · 835 阅读 · 0 评论 -
VS2017 把类导出成动态链接库DLL并隐式调用
把类导出成DLL和把函数导出成DLL 的方法类似,非常详细的步骤见https://blog.csdn.net/weixin_43222324/article/details/94589140这里只说一下大概步骤:(1)新建一个DLL项目(2)在定义DLL 应用程序的导出函数 yourDLL(你自己取得名字).cpp里,写入类的声明和定义,【重要:类的声明前加 _declspec(dlle...原创 2019-09-11 11:40:46 · 1550 阅读 · 0 评论 -
【C++】容器的迭代器失效
// vector、string添加元素后,若存储空间被重新分配,则指向容器的迭代器、指针、引用都失效。// v.front()、v.back()返回的是元素的引用,类型和元素类型一样// v.begin()、v.end()返回的元素的位置,类型是迭代器,要得到元素的值需要解引用// v.front()、v.back()和v.begin()、v.end()都能达到访问首尾元素的效果,但它们不...原创 2019-07-17 20:56:01 · 477 阅读 · 2 评论 -
[C++11] 向函数形参传递vector的引用,并返回vector
#include<iostream>#include<iterator>#include< vector>using namespace std;int main() { vector<int> v; vector<int> v3; vector<int> p(vector<int&...原创 2019-07-09 16:40:40 · 2584 阅读 · 0 评论 -
VS 2017中导出函数为DLL,创建和隐式加载动态链接库
新建一个项目(工程)创建一个控制台应用程序,这里我命名工程名为20190703,点击确定创建好后有以下头文件和源程序在头文件这里新建一个头文件,以实现加法函数为例,我创建了一个名为add_test的头文件创建好头文件后,在头文件里写入你要实现的函数,此处我要实现加法功能,就在头文件里写入了一个简单的加法函数。写好的函数前面要加上 extern "C" __de...原创 2019-07-03 21:21:54 · 1055 阅读 · 2 评论