前言这篇文章我们来继续STL的学习,今天我们要学习的是list,也是STL中容器的一员。 和之前一样,我们还是先学习它的使用,然后再对它进行一个深度剖析和模拟实现。1. list的介绍及使用1.1 list的介绍list的文档介绍list的底层实现其实就是我们之前数据结构学过的带头双向循环链表:1.2 list的使用首先我们来学习一下list的使用:那经过之 ......
126
0
0
2024-04-30
一.回调函数要想理解回调函数,就要先知道什么是函数指针,函数指针详见:http://t.csdn.cn/oYiuC1.回调函数的定义函数指针作为某个函数的参数函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。 简单讲:回调函数是由别人的函数执行时调用你实现的函数。2.来自知乎作者常溪玲的解说你到一个商店买东西,刚好你要的东西 ......
128
0
0
2024-04-30
这篇文章我们来做几道vector相关的OJ练习,练习一下vector的使用。。1. 只出现一次的数字题目链接: link思路讲解那这道题我们用^来搞是不是就非常简单啊。 两个相同的整数异或结果为0;0和任何整数异或结果还是这个数本身。 所以可以怎么搞,定义一个变量初始值为0,遍历数组,让它和每一个元素进行异或,最终的结果就是数组中只出现一次的那个数字。AC代 ......
209
0
0
2024-04-30
前言这篇文章我们来学习一下STL里面的vector,它属于STL中容器的一员,我们先来学习一下它的使用,然后,我们也会对vector进行一个深度的剖析和模拟实现。1. vector的介绍及使用1.1 vector的介绍vector的文档介绍 vector 是表示大小可以更改的数组的序列容器:其实大家可以认为vector就是我们之前数据结构学的顺序表,那说到顺 ......
166
0
0
2024-04-30
前言在上两篇中,我们已经学习了string类的一个使用,并且做了一些相关的OJ练习,相信大家现在对于string的使用已经没什么问题了。 那我们这篇文章呢,就来带大家对string进行一个模拟实现,这篇文章过后,有些地方大家或许就可以理解的更深刻一点。1. string的结构那通过之前文章的学习我们已经对string有了一些了解了:我们知道,string的底 ......
125
0
0
2024-04-30
我们来看几道string相关的OJ,来练习一下string的使用。1. 仅仅反转字母题目链接: link我们一起来看一下题:思路分析我们来分析一下题目,这道题让我们干什么呢? 给我们一个字符串,该字符串中有英文字符也有非英文字符,要求我们去反转字符串中的所有英文字母,非英文字母的字符位置不动。 那是不是很简单啊,左右两个指针分别指向首尾,然后依次向中间移动 ......
176
0
0
2024-04-30
1. STL简介1.1 什么是STLSTL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。1.2 STL的版本原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、 ......
149
0
0
2024-04-30
1. 泛型编程首先我们来思考一个问题:如何实现一个通用的交换函数呢?即我们想交换两个变量,这两个变量可以是整型,也可以是浮点型,或者其它内置类型,然后它们的交换都可以用一个函数完成。 那在C语言中肯定是没法解决这个问题的,不过我们之前学习过在C++里支持函数重载,所以呢,我们就可以这样搞:代码语言:javascript复制void Swap(int& ......
166
0
0
2024-04-30
在之前C语言的学习中,我们学过了C是如何进行动态内存管理的,也简单的了解过C/C++程序的内存开辟。 这篇文章呢,我们重点来学习一下C++的内存管理方式。1. C/C++内存分布C/C++的内存分布我们在之前也是了解过的,那我们这里再简单复习一下。我们先来看下面的一段代码和一些相关的问题:代码语言:javascript复制int globalVar = 1 ......
156
0
0
2024-04-30
这篇文章呢,我们来再来对类和对象做一些补充,进行一个最后的收尾!1. 再谈构造函数那上一篇文章呢,我们学了类的6个默认成员函数,其中我们第一个学的就是构造函数。那我们先来回忆一下构造函数:构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。 也就是说,构 ......
143
0
0
2024-04-30
你好,我是乐哥,一个从事C/CPP开发十几年的老鸟~~在C++中,编译器在编译某个源文件时确实需要查看其中所有需要调用的函数的声明。这是因为C++是一种静态类型语言,编译器在编译阶段需要了解函数的签名(返回类型、函数名、参数类型和顺序等信息),以便进行类型检查和生成正确的机器代码。因此,如果我们在一个文件中定义一个函数,并想在另一个文件中调用它,则也必须在该 ......
140
0
0
2024-04-25
C++的RapidJSON库的分析和实践RapidJSON是一个用于解析和生成JSON数据的快速高效的C++库。它提供了简洁的API和卓越的性能,使得处理JSON数据在C++项目中变得更加简单和高效。本文将介绍RapidJSON库的一些关键特性,并探讨它在性能优化方面所做的实践。RapidJSON简介RapidJSON是一个开源的C++库,专注于解析和生成J ......
216
0
0
2024-04-22
文章目录1.计算日期到天数转换题目详情代码思路2.KY111 日期差值题目详情代码思路3.KY222 打印日期题目详情代码4.KY258 日期累加题目详情代码思路1.计算日期到天数转换传送门题目详情代码#include <iostream> using namespace std; int GetDay(int year,int month) ......
171
0
0
2024-04-22
一、什么是队列?队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。可以形象地将队列想象成生活中的挤地铁,在挤地铁的时候我们只能够从后面进入队伍,出也只能够从队头出到地铁。总结:队列是只支持尾插头删的 ......
156
0
0
2024-04-20
一、什么是栈?栈是计算机科学中的一种数据结构,它是一种线性结构,按照先进后出的原则进行存储和访问。栈通常也称作堆栈、堆叠或简称电梯。在栈中,添加或删除元素只能在同一端进行,这一端被称为栈顶。当向栈顶添加一个元素时,我们称之为入栈;当从栈顶删除一个元素时,我们称之为出栈。对于栈的一项重要特性是,每次只能访问位于栈顶的元素,因此栈是不支持随机访问的数据结构。栈和 ......
188
0
0
2024-04-20