第一节 线性数据结构 STL
vector 容器
迭代器
vector<int> v{1, 0, 0, 8, 6};
for(vector<int>::interator it = v.begin(); it != v.end(); it ++)
cout << *it << " ";
函数
push_back(x); // 添加元素
pop_back(); // 删除尾元素
size(); // 查询 vector 长度
insert(it, x); // 插入元素
erase(); // 删除vector容器中的一个或一段元素
clear(); // 清空容器
总结
做题时能用数组就尽量用数组, vector 的时间复杂度比数组慢很多。
set 集合
介绍
\(set\)(集合)是 \(C++ STL\) 中的一种关联式容器, 它内部使用红黑树(一种自平衡二叉搜索树)去实现元素的有序存储。
访问
只能通过迭代器访问 例:
set<int> s{1, 0, 0, 8, 6};
for(set<int>::interator it = s.begin(); it != s.end(); it ++)
cout << *it << " ";
但可以利用 \(C++ 11\) 继续简化
for(auto it = s.begin(); it != s.end(); it ++)
cout << *it << " ";
或
for(auto it : s)
cout << it << " ";
函数
insert(x); // 时间复杂度 O(log_n)
find(x); // 返回 set 中对应值的迭代器, 否则返回 end(), 时间复杂度 O(log_n)
erase(first, second); // 删除容器中的元素
clear(); // 清空容器
lower_bound(x); // 找到首个大于等于给定元素的迭代器, 不存在返回 end()
upper_bound(x); // 找到首个大于给定元素的迭代器, 不存在返回 end()
size(); // 查询 set 元素个数, 时间复杂度 O(1)
empty(); // 容器是否为空
count(x); // 查找 x 的个数, 返回 0 / 1
拓展
不去重但排序的容器 : \(multiset\)
map 容器
为什么要用 map
问 : 我要统计一堆数中一个数的个数, 用什么!!
答 : 用 桶数组!!
再问 : 我要统计一堆字符串中一个字符串的个数, 用什么!!
答 : \(map\)!!
现在懂了为什么要用 \(map\) 了吗?
特性
1. 通过键访问
map<string, int> mp;
mp["mp"] ++;
mp["10086"] ++;
mp["abc"] ++;
mp["10086"] ++;
cout << mp["10086"] << ' ' << mp["abc"];
这里程序结果输出 2 1
, 可以看出 \(map\) 的键具有唯一性。
2. 通过迭代器访问
注: map 会以键的大小自动排序
map<char, int> mp;
mp['a'] ++;
mp['b'] = 10086;
mp['c'] = 114514;
for(map<char, int>::interator it = mp.begin(); it != mp.end(); it ++)
cout << it->first << " " << it->second << endl;
这里 也可以写成 :
for(auto it = mp.begin(); it != mp.end(); it ++)
cout << it->first << " " << it->second << endl;
或
for(auto it : mp)
cout << it.first << " " << it.second << endl;
函数
insert(); // 插入元素
find(x); // 查询元素, 不存在返回 end()
erase(); // 删除元素或区间
size(); // 查询长度
empty(); // 判断是否为空
栈和队列
介绍 (略)
优先队列
定义
prtority_queue<int, vector<int>, greator<int> > q;
prtority_queue<int, vector<int>, less<int> > q;
等价与
prtority_queue<int> q;
尺取法
例如 : 找出序列 {2, 3, 1, 2, 4, 3} 中满足其和 \(≥ 7\) 的长度最小的连续子数组。
此题中就可用尺取法解题。
时间复杂度对比 :
暴力枚举 : O(n^2)
尺取法 : O(n)
可见 尺取法的时间复杂度是十分出色的
初赛内容 : 计算机相关知识
重要注释
CCF 中国计算机学会
: CCF 是中国计算机及相关领域的学术团体
第一台计算机
: 1946年2月14日 在美国宾夕法尼亚大学诞生
计算机杰出人物
: 冯 · 诺依曼 & 艾伦 · 图灵
计算机的分类 ✓
- 按年代分类
年代 | 实现方式 |
---|---|
1946 至1958 | 电子管 |
1959 至 1964 | 晶体管 |
1965 至 1970 | 集成电路 |
1971 至 N/A | 超大规模集成电路 |
- 按性能分类
巨型机 > 大/中型机 > 小型机 > 微型机 = 工作站
补:一般按照规模大小、性能、能耗等分类。
重要贡献人员 ★
阿兰·艾伦·图灵(英):数学家,逻辑学家,计算机科学/人工智能之父,首次提出了计算机科学理论。计算机界的最高奖项“图灵奖”以他命名,被称为“计算机界的诺贝尔奖”。
冯·诺依曼(美):科学家,现代计算机之父,首次提出了存储程序控制原理,称为“冯·诺依曼结构”。
克劳德·香农(美):科学家,创造了信息论,提出了某种信息从一处传送到另一处所需的全部设备所构成的系统。
计算机的构成 ✓
要想实现计算机的基础功能,计算机必须由运算器、存储器、控制器、输入设备、输出设备构成,缺少前两者就无法正常启动计算机,即为“冯·诺依曼结构”。
CPU(Central Processing Unit):中央处理器,由运算器(计算)+控制器(指挥)+寄存器组成。计算机的核心部件,被称为计算机的“大脑”,又称“微处理器”。
内存储器:简称“内存”,用于电脑内部的存储。相对外存而言,读写速度快,但是存储空间小,并且存储在 RAM 里的数据断电后会丢失。注意与“外存(硬盘等)”区分开。
RAM(Random Access Memory):随机存取存储器,与CPU直接交互数据,可随时读写,断电数据全部丢失。
ROM(Read-Only Memory):只读存储器,只能读出无法写入信息。信息一旦写入后就固定下来,断电数据不会丢失,故又称为固定存储器。
外存储器:简称“外存”,用于处置长期保存的数据,一般处于电脑外部,断电后数据不会丢失。相对内存而言,外存读写速度慢,但存储容量大。主要包括硬盘、光盘、U 盘(USB闪存盘)等类型。
输入设备:在计算机与人交互时,接受外部命令或者需要加工的数据。常用的输入数据包括键盘、鼠标、麦克风、摄像头等。
输出设备:在计算机与人交互时,将处理结果以人类能够识别/感受的方式呈现出来的设备。常有的输出设备包括显示器、音响、打印机等。
如上图,为各个设备之间的关系,不同设备用不同颜色进行表示。
关于CPU ✓
访问速度:寄存器>高速缓存>内存>外存。
历史:出现于 \(20\) 世纪 \(70\) 年代。
断电后数据保留于 ROM 和外存。
空间换算 ★
「小」单位 | 「大」单位 |
---|---|
8 bit(比特) | 1 B(Byte/字节) |
1024 B | 1 KiB(Kilobyte) |
1024 K(iB) | 1 MiB(Millonbyte) |
1024 M(iB) | 1 GiB(Gigabyte) |
1024 G(iB) | 1 TiB(Terabyte) |
\(iB\) 结尾的是 \(1024\) 单位一换算,\(B\) 结尾的是 \(1000\) 单位一换算(如 \(KB\),上表中没有),这就是我们买的 \(512GiB\) 硬盘有时候显示不到 \(500GiB\) 的原因。(单位不同)
网络
- 网络的定义
网络 是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。它是人们信息交流使用的一个工具。
- 网络的分类
局域网(LAN)。局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围通常局限在10 千米范围之内,属于一个单位或部门组建的小范围网。
城域网(MAN)。城域网是作用范围在广域网与局域网之间的网络,其网络覆盖范围通常可以延伸到整个城市,借助通信光纤将多个局域网联通公用城市网络形成大型网络,使得不仅局域网内的资源可以共享,局域网之间的资源也可以共享。
广域网(WAN)。广城网是一种远程网,涉及长距离的通信,覆盖范围可以是个国家或多个国家,甚至整个世界。由于广域网地理上的距离可以超过几千千米,所以信息衰减非常严重,这种网络一般要租用专线,通过接口信息处理协议和线路连接起来,构成网状结构,解决寻径问题。
- 网络体系结构
网络通常按层或级的方式来组织,每一层都建立在它的下层之上。 不同的网络,层的名字、数量、内容和功能都不尽相同。 但是每一层的目的都是向它的上一层提供服务,这一点是相同的。 层和协议的集合被称为网络体系结构。如 :\(TCP\)
- OSI 模型示意图
IP 地址分类
错题整理
- 设当价格不变时,集成电路上可容纳的元器件的数目,约每隔18~24个月便会增加一倍,性能也将提升一倍。提出该规律的是( )
A. 图灵
B. 诺贝尔
C. 摩尔
D. 冯-诺伊曼
题解 : 这个规律通常被称为摩尔定律,它由英特尔公司的联合创始人之一戈登·摩尔(Gordon Moore)在1965年提出。根据摩尔定律,集成电路上可容纳的元器件数目每隔约18到24个月就会增加一倍,同时性能也会提升一倍。这一规律在半导体产业的发展中起到了重要的指导作用。
- 1956年( )授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain)
A. 诺贝尔物理学奖
B. 约翰·冯·诺依曼奖
C. 图灵奖
D. 高德纳奖 (Donald E. Knuth Prize)
- 为解决 web 应用中的不兼容问题,保障信息的顺利流通,( )制定了一系列标准,涉及 HTML、XML、CSS 等,并建议开发者遵循。
A. 微软
B. 美国计算机协会(ACM)
C. 联合国教科文组织
D. 万维网联盟(W3C)
题解 : 为解决 web 应用中的不兼容问题,保障信息的顺利流通,D. 万维网联盟(W3C)制定了一系列标准,涉及 HTML、XML、CSS 等,并建议开发者遵循。
万维网联盟(World Wide Web Consortium,简称 W3C)是一个国际组织,致力于推动互联网的发展和标准化。W3C 的使命是制定开放的 Web 标准,以确保 Web 的长期发展,并促进 Web 技术的互操作性。W3C 制定的标准包括 HTML、XML、CSS 等,这些标准的使用可以提高 Web 应用的兼容性和互操作性,使信息在不同的平台和设备之间顺利流通。开发者可以参考和遵循 W3C 的标准来开发符合 Web 标准的应用程序。
- 以下竞赛活动中历史最悠久的是( )。
A. 全国青少年信息学奥林匹克联赛(NOIP)
B. 全国青少年信息学奥林匹克竞赛(NOI)
C. 国际信息学奥林匹克竞赛(IOI)
D. 亚太地区信息学奥林匹克竞赛(APIO)
- 现在的计算机通常是将处理程序放在连续的内存地址中。CPU在执行这个处理程序时,是使用一个叫( )的寄存器来指示程序的执行顺序。
A. 累加寄存器
B. 指令寄存器
C. 内存地址寄存器
D. 指令地址寄存器
题解 : 在现代计算机中,用于指示程序执行顺序的寄存器是 D. 指令地址寄存器(Instruction Address Register,简称 IAR)。
指令地址寄存器(IAR)是CPU中的一个寄存器,它用于存储下一条将要执行的指令的地址。CPU从内存中读取指令时,会根据指令地址寄存器中存储的地址来获取下一条指令的位置,并将其加载到指令寄存器中执行。指令地址寄存器的更新由指令执行控制部件负责,以确保按正确的顺序执行程序中的指令。
因此,正确答案是 D. 指令地址寄存器
- Pv4 协议使用 32 位地址,随着其不断被分配,地址资源日趋枯竭。因此,它正逐渐被 使用( )位地址的 IPv6 协议所取代
A. 40
B. 48
C. 64
D. 128
- 下列说法中,正确的是
A. 数据总线决定了中央处理器CPU所能访问的最大内存空间的大小
B. 中央处理器CPU内部有寄存器组,用来储存数据
C. 不同厂家生产的CPU所能处理的指令集是相同的
D. 数据传输过程中可能会出错,奇偶校验法可以检测出数据中那一为在传输中出了差错
题解 : 正确的说法是选项 B. 中央处理器CPU内部有寄存器组,用来储存数据。
中央处理器(CPU)内部包含了一组寄存器,用于存储和处理数据。寄存器是位于CPU内部的高速存储器,用于临时存储指令和数据,以供处理器执行操作。寄存器具有很快的读写速度,可直接与CPU进行通信。
选项 A. 数据总线决定了CPU访问内存空间的大小是不准确的。数据总线是计算机系统中用于传输数据的通道,其宽度决定了每次传输的数据位数,而与CPU访问的最大内存空间大小无直接关系。
选项 C. 不同厂家生产的CPU所能处理的指令集是不同的。不同的CPU架构和制造商使用不同的指令集架构,例如x86、ARM等,因此不同的CPU所能处理的指令集是不同的。
选项 D. 奇偶校验法用于检测数据传输过程中的错误。奇偶校验法是一种简单的差错检测方法,通过在传输的数据中添加一个奇偶位来检测数据中的错误。然而,奇偶校验法只能检测出奇数个位错误,对于偶数个位错误无法检测出来
- Internet实现了分布在世界各地的各类网络的互联,其最基础和核心的协议是
A. HTTP
B. HTML
C. TCP/IP
D. FTP
第一节 线性数据结构 STL的更多相关文章
- 第一节,TensorFlow基本用法
一 TensorFlow安装 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tsnsor(张量)意味着N维数组,Flow(流)意味着基 ...
- android内部培训视频_第一节
声明:本视频为公司内部做android培训时录制的,无任何商业目的.同时鉴于水平有限,可能不符合您的需求,放在这里的目的是提供给公司同事下载,作为培训的一个记录,也作为一个系列教程的自我督促完成的理由 ...
- Python3-Cookbook总结 - 第一章:数据结构和算法
第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- PCB 铜皮(Surface)折线多边形扩大缩小实现(第一节)
继续铜皮多边形的相关的算法, 如何用代码实现多边形的扩大与缩小,这部份内容准备分为四节内容来讲解, 第一节,折线多边形的扩大缩小(不包含圆弧) 此篇讲第一节 第二节,带圆弧的多边形的扩大缩小 第三 ...
- 02.python线性数据结构
内建常用数据类型 分类 数值型 int.float.complex.bool 序列sequence 字符串str.字节序列bytes.bytearray 列表list.元组tuple 键值对 集合se ...
- 我的第一节Android课
我的第一节安卓课程,今天非比寻常的一天,我开始了我程序猿之路的第一节安卓课程,安卓课程只是我的一个兴趣班,我的本专业是java开发,因为喜欢做一个属于自己的一个手机APP,就选多个一样技能,毕竟十八般 ...
- 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触
http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...
- Centos7 Openstack - (第一节)基本环境配置
Centos7 install Openstack - (第一节)基本环境配置 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack官方文档配置 官方文 ...
- seajs第一节,seajs基本使用
什么是seajs,它是干什么使用的,可以去网上搜索一下, 官网:http://seajs.org/docs/ 基本使用seajs <!DOCTYPE html> <html> ...
随机推荐
- Mysql 存储引擎的区别以及索引查询失效的情况
存储引擎:就是指表在计算机上的存储方式.可以通过 SHOW ENGINES; 命令查询支持的存储引擎. alter table test engine= innodb/memory/myisam/ar ...
- 8.5考试总结(NOIP模拟31)[Game·Time·Cover]
我们总是在注意错过太多,却不注意自己拥有多少. 前言 考场上疯狂搞第一题,终于把人给搞没了.. T1 Game 解题思路 线段树+二分 总体来讲就是用线段树维护三个值: 没有产生贡献的 a(小 B 的 ...
- 『手撕Vue-CLI』下载指定模板
开篇 经上篇文章的介绍,实现了获取下载目录地址,接下来实现下载指定模板的功能. 背景 通过很多章节过后,已经可以拿到模板名称,模板版本号,下载目录地址,这些信息都是为了下载指定模板做准备的. 实现 如 ...
- Apisix网关-使用Grafana可视化Apisix的Prometheus数据
Apisix安装部署 Apisix官网安装教程 Apisix Dashboard官网安装教程 本次教程使用RPM包安装方式 使用systemctl管理服务 Apisix配置要点 /usr/local/ ...
- C语言——函数基本知识
什么是函数 函数的定义 函数就是程序中独立的功能.(简单来说就是把代码打包成整体,起个名字,方便以后使用) 函数的使用 定义函数的格式 格式: 返回值类型 函数名(形参1,形参2,...) { 函数体 ...
- umount 报错umount: /new_room: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
挂载逻辑卷后,尝试更新逻辑卷的文件系统 [root@server lost+found]# umount /new_room/ umount: /new_room: target is busy. ( ...
- numpy cumsum()函数简介
函数原型:numpy.cumsum(a, axis=None, dtype=None, out=None) 可参考链接:https://docs.scipy.org/doc/numpy-1.10.1/ ...
- C# .NET6 .NET CORE EXCEL 导入和导出
使用NPOI导入.xlsx遇到"EOF in header"报错,网上找好很多方法,没解决,最后换成EPPlus.Core导入. 导出默认是.xls. NPOI 操作类: usin ...
- WPF/C#:程序关闭的三种模式
ShutdownMode枚举类型介绍 ShutdownMode是一个枚举类型,它定义了WPF应用程序的关闭方式.这个枚举类型有三个成员: OnLastWindowClose:当最后一个窗口关闭或者调用 ...
- springmvc组件说明
DispatcherServlet:前端控制器,也称为中央控制器,它是整个请求响应的控制中心,组件的调用由它统一调度. HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应 ...