
C/C++
文章平均质量分 92
0xNOPE
blog:0xnope.top
nooooooope
展开
-
STL常用的一些算法
查找算法find ------------------------查找find_if --------------------按条件查找count -----------------------统计元素个数count_if ------------------按条件统计元素个数adjacent_find -----------查找相邻重复元素binary_sea原创 2020-07-31 19:39:44 · 285 阅读 · 1 评论 -
虚函数和纯虚函数的用法和区别
学习C++的多态,必然听说过虚函数和纯虚函数。要学习虚函数和纯虚函数,首先我们要搞清楚它的语法规范。总结一下无非下面几点:在类成员方法的声明(注意不是定义)前面加个virtual,该函数就变为虚函数,在虚函数声明语句后面加个=0,虚函数就变为纯虚函数。当类中有了纯虚函数,这个类也称为抽象类子类可以重新定义基类的虚函数,我们把这个行为称之为复写(override)。子类可自主选择是否要提供一份属于自己的个性化虚函数实现,但是必须提供一份属于自己的个性化纯虚函数实现。虚函数和纯虚函数出现的意义何原创 2020-07-28 16:04:41 · 618 阅读 · 0 评论 -
攻防世界re 新手区wp
攻防世界re 新手区wp这个几天没有之前忙了,现在有时间整理一下之前做的攻防世界新手区的题目,记录一下学习过程,也复习一下https://adworld.xctf.org.cn/re1方法一:下载附件,die查壳,无壳,载入ida查看简单的明文比较,将比较过后的结果赋给v5,v5就是flag查看上面两个字符串一串数字按r转换为字符串如上,然后写出脚本即可得到flagDUTCTF{...原创 2019-12-25 00:22:20 · 1130 阅读 · 0 评论 -
C++的sting类用法总结
string是C++风格的字符串,它不同于char*。char是一个指针,而string的本质其实是一个类,它的内部封装了char来管理这个字符串,是一个char*型的容器。构造函数原型:string(); //创建一个空字符串string(const char* s); //使用字符串s初始化string(const string& str); //一个string对象初始化另一个string对象string(int n, char m原创 2020-07-24 20:11:14 · 679 阅读 · 0 评论 -
C++set/multiset容器的理解
写在前面:set/multiset属于关联式容器,底层结构是用二叉树实现。set/multise容器当中的所有元素都会在插入时自动被排序。set不允许容器中有重复的元素multiset允许容器中有重复的元素关联容器就是通过键(key)来读取和修改元素。不同于map关联容器,它只是单纯键的集合。构造函数set<T> st; //默认构造函数:set(const set &st); //拷贝构造函数赋值操原创 2020-07-06 22:02:12 · 207 阅读 · 0 评论 -
C++一个超好用的容器,List容器
写在前面:链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。链表由一系列结点组成。结点由存储数据元素的数据域,和存储下一个结点地址的指针域组成。STL当中的list容器是个双向链表,支持前移和后移,属于双向迭代器。构造函数list构造方式和vector,deque容器差不多。list<T> lst; //list采用采用模板类实现,对象的默认构造形式:list(beg()原创 2020-07-06 18:46:57 · 251 阅读 · 0 评论 -
C++deque容器的理解
deque容器(发音类似"deck"),一种动态数组,允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。deque与vector相似,但deque在头部和尾部进行数据插入和删除操作更加高效。vector与deque相似,但内部的实现原理不同:vector使用了动态数组,该数组通常需要动态增长;deque中的元素在不同的缓冲区中,在deque中保存了一些必要的信息(地址)。除了频繁在头部或尾部进行插入和删除的操作外,deque容器的效率不高。内部工作原理:deque内部有个中控器原创 2020-07-06 11:30:46 · 203 阅读 · 0 评论 -
来自初学者的vector容器总结 C/C++
vector 常被称为向量容器,是 STL 中最常用的容器之一,vector容器简单的说:vector是一个能够存放任意类型的动态单端数组,能够增加和压缩数据。使用vector容器必须包含**< vector >头文件:#include< vector >;**vector属于std命名域的内容,因此需要通过命名限定:using std::vector;也可以直接使用全局的命名空间方式:using namespace std;vector类常用的函数构造函数vector原创 2020-06-24 11:35:30 · 403 阅读 · 0 评论 -
初识STL
由来大多是情况下,由于数据结构和算法未能有一套标准,导致被迫从事大量重复工作,软件界想要建立一套可重复利用的东西,于是诞生STL(Standard Template Library,标准模板库)。STL 几乎所有的代码都采用了模板类或者模板函数。也就是说,别人把方法都封装好了,只需要调用便可。六大件STL从广义上分:容器(container) 算法(algorithm) 迭代器(iterator)。 容器和算法之间通过迭代器进行无缝连接。STL从狭义上看:又有六大组件,分别是:容器、算法、迭代器原创 2020-06-20 17:27:29 · 166 阅读 · 0 评论 -
从一个初学者的角度来理解总结C++模板
前言:我们知道,C++除了有面向对象的编程思想以外,还具有泛型编程的思想。C++是一门强类型语言,所以无法做到像如python一样的一些动态语言那样:编写出一段通用的逻辑,然后把任意类型的变量传入进行处理。但是泛型编程的出现,正好弥补了C++的这一缺陷。我们用模板这样一种技术实现泛型编程。模板的概念正如字面意思,C++当中的模板就是建立通用的模具,大大提高复用性。和平时在网上下载的PPT模板差不多,就是个框架。模板更准确点的说法其实是,一种对类型进行参数化的工具。C++的STL容器,及其迭代器和算原创 2020-06-16 20:54:03 · 168 阅读 · 0 评论 -
C++的运算符重载,浅显易懂
C++预定义中的运算符只能对基本的内置数据类型进行操作,但是对于我们自定义的类型是没有办法操作的,我们对这么运算符重新定义,才能对我们自己定义的数据类型进行操作。对于运算符重载,它的实质其实是函数重载或者说,函数多态。重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。运算符重载函数的格式:<返回类型说明符> operator &l...原创 2020-06-10 13:38:28 · 217 阅读 · 0 评论 -
C++常见的一个坑,一个经典的面试考题:深拷贝和浅拷贝问题
我们知道,对一个已知对象进行拷贝,编译系统会自动调用拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。我们先来看一个测试案例:#include <iostream>#include <string>using namespace std;class Student{public: Student() { cout << ...原创 2020-04-20 11:40:55 · 600 阅读 · 0 评论 -
函数指针??指针函数??傻傻分不清。
在学习C语言的时候,指针是非常让人头疼的,由指针延申出来的函数指针,指针函数,函数指针函数,指针函数指针,数组指针,指针数组等等更是让人难以理解,本文呢,就区分一下函数指针和指针函数的区别及其用法。函数指针定义函数指针本质上是指针,我们所写函数代码在内存中会被分配一段专门的储存空间,这段储存空间的地址就是函数的地址,既然是地址,就可以用指针去表示,自然就有了函数指针。声明格式:类型说明符 ...原创 2020-03-30 09:51:00 · 145 阅读 · 0 评论