C++
Ther Meng
这个作者很懒,什么都没留下…
展开
-
深度遍历迷宫搜索C++实现
// 深度遍历迷宫路径搜索.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <stack>using namespace std;#if 0/*深度遍历搜索迷宫路径,软件运行要求如下:请输入迷宫的行列数(例如:10 10):5 5请输...原创 2020-04-09 15:08:09 · 764 阅读 · 0 评论 -
C++模拟车站窗口卖票
#include "pch.h"#include <iostream>#include <thread>#include <mutex>#include <list>using namespace std;#if 0/*C++ thread 模拟车站三个窗口卖票的程序线程间的互斥 =》 互斥锁mutex =》 lock_guar...原创 2020-04-03 14:12:54 · 493 阅读 · 1 评论 -
生产者消费者线程间通信模型
#include "pch.h"#include <iostream>#include <thread>#include <mutex>#include <condition_variable>#include <queue> // C++ STL所有的容器都不是线程安全using namespace std;#if 0/...原创 2020-04-03 14:11:46 · 130 阅读 · 0 评论 -
lambda表达式实例
#include "pch.h"#include <iostream>#include <algorithm>#include <vector>#include <functional>#include <map>#include <memory>#include <queue>using name...原创 2020-04-02 17:14:14 · 122 阅读 · 0 评论 -
function函数对象应用示例
#include "pch.h"#include <iostream>#include <vector> #include <map>#include <functional> // 使用function函数对象类型#include <algorithm>#include <ctime>#include <...原创 2020-04-01 18:11:06 · 208 阅读 · 0 评论 -
【手撕代码】手动实现一个bind1st和bind2nd绑定器
// 08 C++绑定器和函数对象.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。//#include “pch.h”#include #include #include #include #include using namespace std;#if 0/*绑定器和函数对象operator()1.C++ STL中的绑定器bind1st : o...原创 2020-04-01 17:09:34 · 210 阅读 · 1 评论 -
引用和指针的区别
引用是一种更安全的指针引用必须初始化 ,指针可以不初始化从汇编角度看,指针和引用的创建和修改变量的值是一模一样的00212679 lea eax,[a]0021267c mov dword ptr [p],eax指针需要解引用才可以拿到值引用直接可以拿到值引用只有一级,指针可以有多级指针的大小是固定的,而引用变量的大小是根据被引用的变量的大小来确实的int &a=...原创 2020-03-29 19:22:05 · 317 阅读 · 0 评论 -
inline内联函数和普通函数的区别
inline只是建议编译器把这个函数处理成内联函数并不是所有的inline都会被处理成内联函数,比如递归和循环或者内联函数中的代码很多inline的优势:在普通函数的调用过程中,有函数栈帧的压栈和出栈,如果大量的这些操作,会使得很耗费性能,所以此时inline内联函数在编译时期就没有调用开销了,在函数的调用点直接将大妈进行展开处理debug版本上,inline是不起作用的,inline只有在...原创 2020-03-29 15:33:14 · 978 阅读 · 0 评论 -
C++中new和malloc的区别
new与malloc的9点区别1. 申请的内存所在位置new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用f...原创 2020-03-17 14:49:04 · 93 阅读 · 0 评论 -
C++函数重载、隐藏、覆盖和重写的区别
1.函数重载(Function Overload)1.1定义C++规定在同一作用域中,同名函数的形式参数(指参数的个数、类型或者顺序)不同时,构成函数重载。1.2用法比如,要从两个变量中返回其中较大的一个值,可以编写如下两个构成重载的函数。int max(int a,int b) { return a>b?a:b;};double max(double a,double ...原创 2020-03-17 14:20:01 · 173 阅读 · 0 评论 -
C++引用和指针的区别
我们可以把引用理解成变量的别名。定义一个引用的时候,程序把该引用和它的初始值绑定在一起,而不是拷贝它。计算机必须在声明r的同时就要对它初始化,并且,r一经声明,就不可以再和其它对象绑定在一起了。引用的一个优点是它一定不为空,因此相对于指针,它不用检查它所指对象是否为空,这增加了效率(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质...原创 2020-03-17 14:00:20 · 90 阅读 · 0 评论 -
C++中struct和class的区别
在C++中我们可以看到struct和class的区别并不是很大,两者之间有很大的相似性。那么为什么还要保留struct,这是因为C++是向下兼容的,因此C++中保留了很多C的东西。一.首先看一下C中struct1.struct的定义struct A{ int a; int b; //成员列表};注意:因为struct是一种数据类型,那么就肯定不能定义函数,所以在面向c的过程...原创 2020-03-17 13:43:40 · 234 阅读 · 0 评论 -
迭代器失效问题
在序列容器里,删除了当前的iterator 导致后边所有元素的迭代器都会失效 增加一个元素也会导致后边的元素进行移动因为vector、deque是序列容器,使用连续分配的内存,删除当前元素,后边的所有元素都会向前移动一个位置,之后数据的地址发生了变化,之前的迭代器根据原有容器的信息访问不到正确的内容。使用earse方法删除元素的时候 erase方法会返回下一个元素的迭代器(有效);用迭代器...原创 2020-03-16 17:50:54 · 319 阅读 · 0 评论 -
如何定义一个只能在堆上(栈上)生成对象的类?
链接:https://www.nowcoder.com/questionTerminal/0a584aa13f804f3ea72b442a065a7618来源:牛客网在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后...原创 2020-03-16 17:41:54 · 125 阅读 · 0 评论 -
C++一个空类的大小
#include <iostream>using namespace std;class A{ };int main(){ cout<<sizeof(A)<<endl;}经测试,这段代码在Xcode平台,以及Ubuntu平台下,则是结果均为1C++标准指出,不允许一个对象(当然包括类对象)的大小为0,不同的对象不能具有相同的...原创 2020-03-13 18:12:48 · 484 阅读 · 0 评论 -
C++11:三个线程循环打印ABC
/*用条件变量控制输出的字符,用ready来标记哪个线程来输出,当ready==0时,func1线程打印A,如果不是1的话则阻塞在条件变量上等待,当func1线程打印完成后,给ready+1,让另一个线程打印B,以此类推*/#include <iostream>#include <thread>#include <condition_variable>u...原创 2020-03-11 17:42:40 · 1267 阅读 · 0 评论 -
C++空指针访问成员函数
空指针访问成员函数,若这个成员函数中用到了this指针,比如此成员函数打印了成员变量(实质为this->成员变量),此时会崩溃,若此成员函数中没有用到this指针,则不会崩溃。比如打印“helloworld”...原创 2020-02-27 16:48:44 · 125 阅读 · 0 评论