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\) 的原因。(单位不同)

网络

  • 网络的定义

网络 是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。它是人们信息交流使用的一个工具。

  • 网络的分类
  1. 局域网(LAN)。局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围通常局限在10 千米范围之内,属于一个单位或部门组建的小范围网。

  2. 城域网(MAN)。城域网是作用范围在广域网与局域网之间的网络,其网络覆盖范围通常可以延伸到整个城市,借助通信光纤将多个局域网联通公用城市网络形成大型网络,使得不仅局域网内的资源可以共享,局域网之间的资源也可以共享。

  3. 广域网(WAN)。广城网是一种远程网,涉及长距离的通信,覆盖范围可以是个国家或多个国家,甚至整个世界。由于广域网地理上的距离可以超过几千千米,所以信息衰减非常严重,这种网络一般要租用专线,通过接口信息处理协议和线路连接起来,构成网状结构,解决寻径问题。

  • 网络体系结构

网络通常按层或级的方式来组织,每一层都建立在它的下层之上。 不同的网络,层的名字、数量、内容和功能都不尽相同。 但是每一层的目的都是向它的上一层提供服务,这一点是相同的。 层和协议的集合被称为网络体系结构。如 :\(TCP\)

  • OSI 模型示意图

IP 地址分类

错题整理

  1. 设当价格不变时,集成电路上可容纳的元器件的数目,约每隔18~24个月便会增加一倍,性能也将提升一倍。提出该规律的是( )

    A. 图灵

    B. 诺贝尔

    C. 摩尔

    D. 冯-诺伊曼

题解 : 这个规律通常被称为摩尔定律,它由英特尔公司的联合创始人之一戈登·摩尔(Gordon Moore)在1965年提出。根据摩尔定律,集成电路上可容纳的元器件数目每隔约18到24个月就会增加一倍,同时性能也会提升一倍。这一规律在半导体产业的发展中起到了重要的指导作用。

  1. 1956年( )授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain)

    A. 诺贝尔物理学奖

    B. 约翰·冯·诺依曼奖

    C. 图灵奖

    D. 高德纳奖 (Donald E. Knuth Prize)
  1. 为解决 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 标准的应用程序。

  1. 以下竞赛活动中历史最悠久的是( )。

    A. 全国青少年信息学奥林匹克联赛(NOIP)

    B. 全国青少年信息学奥林匹克竞赛(NOI)

    C. 国际信息学奥林匹克竞赛(IOI)

    D. 亚太地区信息学奥林匹克竞赛(APIO)
  1. 现在的计算机通常是将处理程序放在连续的内存地址中。CPU在执行这个处理程序时,是使用一个叫( )的寄存器来指示程序的执行顺序。

    A. 累加寄存器

    B. 指令寄存器

    C. 内存地址寄存器

    D. 指令地址寄存器

题解 : 在现代计算机中,用于指示程序执行顺序的寄存器是 D. 指令地址寄存器(Instruction Address Register,简称 IAR)。

指令地址寄存器(IAR)是CPU中的一个寄存器,它用于存储下一条将要执行的指令的地址。CPU从内存中读取指令时,会根据指令地址寄存器中存储的地址来获取下一条指令的位置,并将其加载到指令寄存器中执行。指令地址寄存器的更新由指令执行控制部件负责,以确保按正确的顺序执行程序中的指令。

因此,正确答案是 D. 指令地址寄存器

  1. Pv4 协议使用 32 位地址,随着其不断被分配,地址资源日趋枯竭。因此,它正逐渐被 使用( )位地址的 IPv6 协议所取代

    A. 40

    B. 48

    C. 64

    D. 128
  1. 下列说法中,正确的是

    A. 数据总线决定了中央处理器CPU所能访问的最大内存空间的大小

    B. 中央处理器CPU内部有寄存器组,用来储存数据

    C. 不同厂家生产的CPU所能处理的指令集是相同的

    D. 数据传输过程中可能会出错,奇偶校验法可以检测出数据中那一为在传输中出了差错

题解 : 正确的说法是选项 B. 中央处理器CPU内部有寄存器组,用来储存数据。

中央处理器(CPU)内部包含了一组寄存器,用于存储和处理数据。寄存器是位于CPU内部的高速存储器,用于临时存储指令和数据,以供处理器执行操作。寄存器具有很快的读写速度,可直接与CPU进行通信。

选项 A. 数据总线决定了CPU访问内存空间的大小是不准确的。数据总线是计算机系统中用于传输数据的通道,其宽度决定了每次传输的数据位数,而与CPU访问的最大内存空间大小无直接关系。

选项 C. 不同厂家生产的CPU所能处理的指令集是不同的。不同的CPU架构和制造商使用不同的指令集架构,例如x86、ARM等,因此不同的CPU所能处理的指令集是不同的。

选项 D. 奇偶校验法用于检测数据传输过程中的错误。奇偶校验法是一种简单的差错检测方法,通过在传输的数据中添加一个奇偶位来检测数据中的错误。然而,奇偶校验法只能检测出奇数个位错误,对于偶数个位错误无法检测出来

  1. Internet实现了分布在世界各地的各类网络的互联,其最基础和核心的协议是

    A. HTTP

    B. HTML

    C. TCP/IP

    D. FTP

第一节 线性数据结构 STL的更多相关文章

  1. 第一节,TensorFlow基本用法

    一 TensorFlow安装 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tsnsor(张量)意味着N维数组,Flow(流)意味着基 ...

  2. android内部培训视频_第一节

    声明:本视频为公司内部做android培训时录制的,无任何商业目的.同时鉴于水平有限,可能不符合您的需求,放在这里的目的是提供给公司同事下载,作为培训的一个记录,也作为一个系列教程的自我督促完成的理由 ...

  3. Python3-Cookbook总结 - 第一章:数据结构和算法

    第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. ...

  4. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  5. PCB 铜皮(Surface)折线多边形扩大缩小实现(第一节)

    继续铜皮多边形的相关的算法, 如何用代码实现多边形的扩大与缩小,这部份内容准备分为四节内容来讲解, 第一节,折线多边形的扩大缩小(不包含圆弧)   此篇讲第一节 第二节,带圆弧的多边形的扩大缩小 第三 ...

  6. 02.python线性数据结构

    内建常用数据类型 分类 数值型 int.float.complex.bool 序列sequence 字符串str.字节序列bytes.bytearray 列表list.元组tuple 键值对 集合se ...

  7. 我的第一节Android课

    我的第一节安卓课程,今天非比寻常的一天,我开始了我程序猿之路的第一节安卓课程,安卓课程只是我的一个兴趣班,我的本专业是java开发,因为喜欢做一个属于自己的一个手机APP,就选多个一样技能,毕竟十八般 ...

  8. 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触

    http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...

  9. Centos7 Openstack - (第一节)基本环境配置

    Centos7 install Openstack - (第一节)基本环境配置 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack官方文档配置 官方文 ...

  10. seajs第一节,seajs基本使用

    什么是seajs,它是干什么使用的,可以去网上搜索一下, 官网:http://seajs.org/docs/ 基本使用seajs <!DOCTYPE html> <html> ...

随机推荐

  1. Mysql 存储引擎的区别以及索引查询失效的情况

    存储引擎:就是指表在计算机上的存储方式.可以通过 SHOW ENGINES; 命令查询支持的存储引擎. alter table test engine= innodb/memory/myisam/ar ...

  2. 8.5考试总结(NOIP模拟31)[Game·Time·Cover]

    我们总是在注意错过太多,却不注意自己拥有多少. 前言 考场上疯狂搞第一题,终于把人给搞没了.. T1 Game 解题思路 线段树+二分 总体来讲就是用线段树维护三个值: 没有产生贡献的 a(小 B 的 ...

  3. 『手撕Vue-CLI』下载指定模板

    开篇 经上篇文章的介绍,实现了获取下载目录地址,接下来实现下载指定模板的功能. 背景 通过很多章节过后,已经可以拿到模板名称,模板版本号,下载目录地址,这些信息都是为了下载指定模板做准备的. 实现 如 ...

  4. Apisix网关-使用Grafana可视化Apisix的Prometheus数据

    Apisix安装部署 Apisix官网安装教程 Apisix Dashboard官网安装教程 本次教程使用RPM包安装方式 使用systemctl管理服务 Apisix配置要点 /usr/local/ ...

  5. C语言——函数基本知识

    什么是函数 函数的定义 函数就是程序中独立的功能.(简单来说就是把代码打包成整体,起个名字,方便以后使用) 函数的使用 定义函数的格式 格式: 返回值类型 函数名(形参1,形参2,...) { 函数体 ...

  6. 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. ( ...

  7. numpy cumsum()函数简介

    函数原型:numpy.cumsum(a, axis=None, dtype=None, out=None) 可参考链接:https://docs.scipy.org/doc/numpy-1.10.1/ ...

  8. C# .NET6 .NET CORE EXCEL 导入和导出

    使用NPOI导入.xlsx遇到"EOF in header"报错,网上找好很多方法,没解决,最后换成EPPlus.Core导入. 导出默认是.xls. NPOI 操作类: usin ...

  9. WPF/C#:程序关闭的三种模式

    ShutdownMode枚举类型介绍 ShutdownMode是一个枚举类型,它定义了WPF应用程序的关闭方式.这个枚举类型有三个成员: OnLastWindowClose:当最后一个窗口关闭或者调用 ...

  10. springmvc组件说明

    DispatcherServlet:前端控制器,也称为中央控制器,它是整个请求响应的控制中心,组件的调用由它统一调度. HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应 ...