优先队列的应用 C++实现

优先队列的应用 C++实现 优先队列可以用堆来实现, 堆底层可以用数组表示, 通过索引关系,可以表示成一颗二叉完全树 C++的STL提供了相应的容器适配器 包含在 头文件中 下面通过一道题来看如何使用它 "给定一个字符串,请将字符串里的字符按照出现的频率降序排列。" 首先,统计字符出现的频率,通过m ... »

C++操作符重载

C++操作符重载 下面举个简单的例子介绍重载操作符 cpp include class A { friend std::istream &operator (std::istream &, A &); friend std::ostream &operator (std::istream &in, ... »

十九、对象的构造顺序

C++中的类可以定义多个对象,对象的构造顺序是怎样的? 1、对象的构造顺序一 对于局部对象:当程序 执行流到达对象的定义语句时进行构造:对象定义 构造 c++ include class Test { private: int mi; public: Test(int i) { mi = i; pr ... »

十八、初始化列表的使用

1、类中定义 成员,及其初始化 如何初始化类里面的 成员? 首先考虑构造函数初始化 于是出现了初始化列表 C++中提供了初始化列表对成员变量进行初始化 语法规则: 通过初始化列表对ci 进行初始化 类成员的初始化, 注意事项: 成员的初始化顺序与成员的申明顺序相同 成员的初始化顺序与初始化列表中的位 ... »

安全之路 —— C++实现进程守护

简介 所谓进程守护,就是A进程为了保护自己不被结束,创建了一个守护线程来保护自己,一旦被结束进程,便重新启动。进程守护的方法多被应用于恶意软件,是一个保护自己进程的一个简单方式,在ring3下即可轻松实现。而创建守护线程的方法多采用远程线程注入的方式,笔者之前曾介绍过远程线程注入的基本方式,主要分为 ... »

GCC 编译 Windows API 程序

前言 这学期学可视化程序设计,要使用 Windows API 绘制界面,由于笔者的笔记本硬盘太小,无法装臃肿的 VS(主要是不想装),也不想用 VC++ 6.0,所以就选用 GCC 来编译。 安装 msys2 下面为 64 位操作系统版本的 msys2 下载地址: "http://repo.msys ... »

C++实现二叉树的相应操作

1. 二叉树的遍历:先序(递归、非递归),中序(递归、非递归),后序(递归、非递归)。 2. 获取二叉树节点个数: 3. 判断二叉树是否为完全二叉树: 4. 求二叉树两个节点的最小公共祖先: 5. 二叉树的翻转: 6. 求二叉树第k层的节点个数: 7. 求二叉树中节点的最大距离(相距最远的两个节点之 ... »

使用C++对物理网卡/虚拟网卡进行识别(包含内外网筛选)

简介 在Socket编程的时候,我们需要实时获取我们所需要的IP地址。例如在编写后门的时候,我们可能需要获得有效的外网IP或内网IP;有时候我们可能需要判断我们获取的是否是虚拟机网卡,这时候就需要对每一张网卡上的特征进行识别。以下笔者总结了一些常用的处理方法供大家参考。 参考资料: 1. "提取网卡 ... »

使用C++对物理网卡/虚拟网卡进行识别(包含内外网筛选)

简介 在Socket编程的时候,我们需要实时获取我们所需要的IP地址。例如在编写后门的时候,我们可能需要获得有效的外网IP或内网IP;有时候我们可能需要判断我们获取的是否是虚拟机网卡,这时候就需要对每一张网卡上的特征进行识别。以下笔者总结了一些常用的处理方法供大家参考。 参考资料: 1. "提取网卡 ... »

C++多线程编程二

1. 死锁与解锁: 2. 迅雷面试题: 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍, 要求输出结果必须按ABC的顺序显示。如:ABCABC...,依次递推。 【参考答案】 运行结果: 【分析】若题目变为:4个线程,输出结果要求为: ABCDA ... »

C++多线程编程一

1.C++多线程初步: 2. 线程冻结与解冻调试: 3. 多线程传参: 4. 多线程的join 和detach: 5. 原子变量与线程安全: 6. lambda 表达式与多线程: 7. 伪函数与多线程: (1)伪函数概念: (2)伪函数与多线程: 8. 成员函数构建多线程: 9. 多线程通信futu ... »

C语言多线程编程二

一. 线程通信 事件: 1.一对一模式: 2. 一对一中介者模式: 3. 一对多广播模式: 二. 信号量: 1. 信号量用作“关卡”的作用: 2. 信号量实现互斥: 三. 互斥锁: 相关函数如下: 第一个 InitializeSRWLock 函数功能:初始化读写锁 函数原型:VOID Initial ... »

C++与C的区别

1. C++风格数组初始化: 2. CPP别名: 3. auto 使用: 4. 函数模板的别名: 5. 收缩转换: 6. 二进制: 7. 常量表达式constexpr : 8. lambda 表达式: 9. 函数包装器: 10. 模板元 11. C++中的const : 12. 智能指针: 13. ... »

C语言实现单链表,并完成链表常用API函数

C语言实现单链表,并完成链表常用API函数: 1.链表增、删、改、查。 2.打印链表、反转打印、打印环形链表。 3.链表排序、链表冒泡排序、链表快速排序。 4.求链表节点个数(普通方法、递归方法)。 5.链表反转(普通方法、递归方法)。 6.链表合并。 7.获取链表中间节点。 8.判断链表是否有环。 ... »

C语言中静态断言的使用

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作异常处理的高级形式,用于代码调试。 如果除数输入不为0,则程序没有错误,正常运行: 如果输入除数为0,此时触发断言: 同时也可利用宏 NDEBUG 来打开或关闭断言: 定义宏 NDEBUG 后,断言关闭,输入除数为0 ... »

2. C语言文件操作经典习题

1. 统计英文文本文件中,有多少个大写字母、小写字母、数字、空格、换行以及其他字符。 2. 编程实现搜索文件 Windows下: 遍历所有c盘下所有 *.txt *.exe dir.* : 在c盘下搜索所有文件内容包含 hello 的文件: Linux下:(搜索时进入管理员权限) 指定目录搜索 确定 ... »