初学者:《C++ STL容器入门:手把手教你使用常用容器》

初学者:《C++ STL容器入门:手把手教你使用常用容器》
  

🎬 博主名称个人主页

🔥 个人专栏《算法通关》《Java讲解》

⛺️心简单,世界就简单

目录

序言

vector

倍增思想:

一,初始化

常用函数

遍历方式

黑科技

pair

定义方式

取出元素方式

构造一个pair

用来干嘛

string

常用函数

操作

queue队列

priority_queue优先队列

常用函数

如何构造小根堆

stack 栈

常用函数

deque 双端队列

set,multiset

常用函数

map,multimap

unordered_set,  unordered_map,   unordered_multiset,  unordered_multimap


序言

我们今天来讲一下

vector

string

queue, priority_queue,

stack

set, map, multiset, multimap

unordered_set,  unordered_map,   unordered_multiset,  unordered_multimap
vector倍增思想:

系统为某一程序分配空间时,所需的时间,基本上与空间大小无关,与申请次数有关

所以,我们申请一个数组大小为1000的数组,和申请1000个大小为1的数组,时间差别就是1000倍,就是因为有这样一个特点,所以我们变长数组要尽量减小申请空间的次数

我们在申请长度后,如果我们空间不够,我们就将长度*2再次申请一,初始化常用函数遍历方式黑科技

vector是支持比较运算的,按字典序大小排序比较

pair

存储一个二元组,可以看成有两个变量的结构体,并且内部有比较函数定义方式

这两个数据类型放什么都行取出元素方式

这个是支持比较运算的,排序时候也是按字典序来排,以 first 为第一关键字,,以第second为第二关键字构造一个pair用来干嘛

最常用就是说,有一个东西有两种不同属性,我们就可以用一个pair来存,我们需要按照一种属性来排序,我们把需要排序的属性放在first。

当然如果有三个属性,我们也可以用pair来存,就pair<int, pair<int, int>> p;这样就行了


string

c++把字符串进行了封装常用函数操作

queue队列

priority_queue优先队列

他的原理就是拿堆来实现的,默认是大根堆常用函数如何构造小根堆

1,q.push()时直接插入负值 

2,定义时就直接定义为小根堆

stack 栈常用函数

deque 双端队列

其实时一个加强版的vector,功能很强大,但是由于时间很慢,我们不常用
set,multiset

set里面不能包含任何重复元素,multiset里可以有重复元素常用函数

set里的所有操作都是O( logn)时间复杂度

map,multimap
unordered_set,  unordered_map,   unordered_multiset,  unordered_multimap

这些和上面的操作都是几乎一样的

不支持lower_bound, ++ ,--他里面时无序的,因为他是unordered,好处就是他的增删改查复杂度都是O( 1 )

这个yxc的stl总结,可以也看看

vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end() [] 支持比较运算,按字典序 pair<int, int> first, 第一个元素 second, 第二个元素 支持比较运算,以first为第一关键字,以second为第二关键字(字典序) string,字符串 size()/length() 返回字符串长度 empty() clear() substr(起始下标,(子串长度)) 返回子串 c_str() 返回字符串所在字符数组的起始地址 queue, 队列 size() empty() push() 向队尾插入一个元素 front() 返回队头元素 back() 返回队尾元素 pop() 弹出队头元素 priority_queue, 优先队列,默认是大根堆 size() empty() push() 插入一个元素 top() 返回堆顶元素 pop() 弹出堆顶元素 定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q; stack, 栈 size() empty() push() 向栈顶插入一个元素 top() 返回栈顶元素 pop() 弹出栈顶元素 deque, 双端队列 size() empty() clear() front()/back() push_back()/pop_back() push_front()/pop_front() begin()/end() [] set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列 size() empty() clear() begin()/end() ++, -- 返回前驱和后继,时间复杂度 O(logn) set/multiset insert() 插入一个数 find() 查找一个数 count() 返回某一个数的个数 erase() (1) 输入是一个数x,删除所有x O(k + logn) (2) 输入一个迭代器,删除这个迭代器 lower_bound()/upper_bound() lower_bound(x) 返回大于等于x的最小的数的迭代器 upper_bound(x) 返回大于x的最小的数的迭代器 map/multimap insert() 插入的数是一个pair erase() 输入的参数是pair或者迭代器 find() [] 注意multimap不支持此操作。 时间复杂度是 O(logn) lower_bound()/upper_bound() unordered_set, unordered_map, unordered_multiset, unordered_multimap, 哈希表 和上面类似,增删改查的时间复杂度是 O(1) 不支持 lower_bound()/upper_bound(), 迭代器的++,-- bitset, 圧位 bitset<10000> s; ~, &, |, ^ >>, << ==, != [] count() 返回有多少个1 any() 判断是否至少有一个1 none() 判断是否全为0 set() 把所有位置成1 set(k, v) 将第k位变成v reset() 把所有位变成0 flip() 等价于~ flip(k) 把第k位取反 

之后要开图论的系列了。球球三连,码字不易,谢谢谢谢大家

Read more

软件使用教程(二):VS Code的Copilot、Git设置与使用

软件使用教程(二):VS Code的Copilot、Git设置与使用

文章目录 * 前言 * 一、Copilot设置 * 1. Copilot的作用 * 2. Copilot设置步骤 * 二、Git集成设置 * 1. 初始设置 * 2. 核心功能与日常使用 * 总结 前言 在追求效率的编程世界里,两款强大的工具正在改变我们的开发方式:Git 让我们能从容管理代码的每一次变化,而 GitHub Copilot 则以其AI智能为我们提供编码建议,甚至自动补全整段代码。 但对于许多开发者,尤其是初学者来说,如何正确配置和高效使用它们,仍是一个挑战。本文将聚焦于 Visual Studio Code,手把手带你完成从Git环境配置到Commit、Push的完整工作流,以及从安装登录到实战应用Copilot的全过程。无论你是想告别命令行焦虑,还是希望拥有一个AI编程伙伴,这篇教程都将为你提供清晰的指引,让你的开发效率获得立竿见影的提升。 一、Copilot设置 1. Copilot的作用 VS Code 中的 Copilot 是一个由 GitHub

By Ne0inhk
AIGC已经不是未来,而是现在:2025年最值得关注的6大趋势!

AIGC已经不是未来,而是现在:2025年最值得关注的6大趋势!

过去一年,AIGC(AI 生成内容)从“概念”彻底走向“落地”。无论你是程序员、产品经理、内容创作者,甚至是业余爱好者,AIGC 已经渗透到每一个内容生产链条中,以一种“你还没准备好,它已经来了”的节奏迅速发展。 本文将带你系统了解:2025 年最热门的 AIGC 内容形态、前沿产品、典型用例,以及未来趋势。 🎥 1. 文生视频已落地:Sora 等产品引爆创意革命         当 OpenAI 推出 Sora 时,整个 AI 圈都沸腾了。         只需一句提示词,比如: "一个穿太空服的熊猫在月球上弹钢琴"         Sora 就能输出秒级电影级视频片段。光影、动作、镜头感,全部一应俱全。 🔧 技术关键词:

By Ne0inhk
【混元AIGC+腾讯云智能体+首创Coze核心流思维导图MCP】:打造一个文思通-智能写作助手Agent

【混元AIGC+腾讯云智能体+首创Coze核心流思维导图MCP】:打造一个文思通-智能写作助手Agent

【混元AIGC+腾讯云智能体+首创Coze核心流思维导图MCP】:打造一个文思通-智能写作助手Agent 1.背景 作为一名长期关注人工智能发展的内容创作者,我经常需要撰写关于AI技术、应用趋势和产品体验的文章。然而,在实际写作过程中,常常会遇到灵感枯竭、结构混乱、表达不够精准等问题。有时候写到一半才发现逻辑断层,或者内容重复,甚至忘记了一些关键知识点。 为了解决这些痛点,我决定打造一个专属于自己的智能写作助手,取名为“文思通”——寓意“文思如泉涌,条理通达”。这个助手不仅要能帮我生成内容,更要具备结构化思维引导、逻辑梳理和语言润色的能力。 最近,我接触到一种创新的工具组合:以 Coze 平台为核心逻辑流,结合自研的思维导图 MCP 服务,可以实现从文本到可视化思维导图的自动转换。这正好解决了我在构思阶段缺乏条理的问题。而选择开发平台时,我注意到腾讯云智能体开发平台与腾讯混元大模型(Hunyuan AIGC) 的深度整合能力非常出色,支持工作流编排、插件扩展(MCP),并且提供稳定高效的推理服务。 最终,我决定采用“混元AIGC + 腾讯云智能体平台

By Ne0inhk
AI编程工具对比:Cursor、GitHub Copilot与Claude Code

AI编程工具对比:Cursor、GitHub Copilot与Claude Code

文章目录 * AI编程工具对比:Cursor、GitHub Copilot与Claude Code * 一、产品定位与核心架构 * 1.1 Cursor:AI原生IDE的代表 * 1.2 GitHub Copilot:代码补全的行业标杆 * 1.3 Claude Code:终端Agent的革新者 * 二、核心功能深度对比 * 2.1 代码生成与理解能力 * 2.2 自动化与工作流集成 * 2.3 隐私与数据安全 * 三、成本效益分析 * 3.1 定价模式对比 * 3.2 投资回报比 * 四、适用场景与用户画像 * 4.1 最佳应用场景 * 4.2 用户反馈摘要 * 五、

By Ne0inhk