C++ 数据结构详解

news/2024/11/16 19:21:40/

目录

C++ 数据结构详解

引言

1. 数组 (Array)

示例代码

2. 向量 (Vector)

示例代码

3. 链表 (List)

示例代码

4. 栈 (Stack)

示例代码

5. 队列 (Queue)

示例代码

6. 集合 (Set)

示例代码

7. 映射 (Map)

示例代码


C++ 数据结构详解

引言

数据结构是计算机科学中的一个重要概念,它决定了数据的组织和存储方式,进而影响到算法的效率和程序的性能。C++ 提供了丰富的数据结构和容器类,使得开发者可以高效地管理和操作数据。本文将详细介绍几种常见的 C++ 数据结构,并通过具体的例子来展示它们的使用方法。

1. 数组 (Array)

数组是最基本的数据结构之一,用于存储固定数量的相同类型的数据。

示例代码
#include <iostream>int main() {int arr[5] = {1, 2, 3, 4, 5};std::cout << "Array elements: ";for (int i = 0; i < 5; ++i) {std::cout << arr[i] << " ";}std::cout << std::endl;return 0;
}
2. 向量 (Vector)

向量是动态数组,可以自动调整大小。C++ 标准库提供了 std::vector 类。

示例代码
#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};std::cout << "Vector elements: ";for (int i = 0; i < vec.size(); ++i) {std::cout << vec[i] << " ";}std::cout << std::endl;// 添加元素vec.push_back(6);std::cout << "After adding an element: ";for (int i = 0; i < vec.size(); ++i) {std::cout << vec[i] << " ";}std::cout << std::endl;return 0;
}
3. 链表 (List)

链表是由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。C++ 标准库提供了 std::list 类。

示例代码
#include <iostream>
#include <list>int main() {std::list<int> lst = {1, 2, 3, 4, 5};std::cout << "List elements: ";for (int val : lst) {std::cout << val << " ";}std::cout << std::endl;// 添加元素lst.push_back(6);std::cout << "After adding an element: ";for (int val : lst) {std::cout << val << " ";}std::cout << std::endl;return 0;
}
4. 栈 (Stack)

栈是一种后进先出(LIFO)的数据结构。C++ 标准库提供了 std::stack 类。

示例代码
#include <iostream>
#include <stack>int main() {std::stack<int> stk;// 添加元素stk.push(1);stk.push(2);stk.push(3);std::cout << "Top element: " << stk.top() << std::endl;// 移除元素stk.pop();std::cout << "Top element after pop: " << stk.top() << std::endl;return 0;
}
5. 队列 (Queue)

队列是一种先进先出(FIFO)的数据结构。C++ 标准库提供了 std::queue 类。

示例代码
#include <iostream>
#include <queue>int main() {std::queue<int> que;// 添加元素que.push(1);que.push(2);que.push(3);std::cout << "Front element: " << que.front() << std::endl;// 移除元素que.pop();std::cout << "Front element after pop: " << que.front() << std::endl;return 0;
}
6. 集合 (Set)

集合是一种不允许重复元素的数据结构。C++ 标准库提供了 std::set 类。

示例代码
#include <iostream>
#include <set>int main() {std::set<int> s;// 添加元素s.insert(3);s.insert(1);s.insert(2);std::cout << "Set elements: ";for (int val : s) {std::cout << val << " ";}std::cout << std::endl;return 0;
}
7. 映射 (Map)

映射是一种键值对的数据结构,每个键对应一个值。C++ 标准库提供了 std::map 类。

示例代码
#include <iostream>
#include <map>int main() {std::map<std::string, int> m;// 添加键值对m["apple"] = 10;m["banana"] = 20;m["cherry"] = 30;std::cout << "Map elements: " << std::endl;for (const auto& pair : m) {std::cout << pair.first << ": " << pair.second << std::endl;}return 0;
}

http://www.ppmy.cn/news/1547519.html

相关文章

集合的介绍与比较器的应用

1.集合&#xff1a; 是一种容器&#xff0c;一种变量类型&#xff0c;跟数组很像 数组的缺点&#xff1a; A.数组的空间长度固定&#xff0c;一旦确定不可以更改。多了浪费&#xff0c;少了报错。 B.使用数组 操作数据的时候&#xff0c;【删除&#xff0c;增加】效率比较低。…

RTSP播放器EasyPlayer.js播放器UniApp或者内嵌其他App里面webview需要截图下载

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…

sqli-labs靶场9-12关(每日4关练习) 持续更新!!!

Less-9 我们先开始判断注入点&#xff0c;闭合方式&#xff0c;数据列数&#xff0c;联合注入这一套下来&#xff0c;发现页面保持不变&#xff0c;大家肯定会想到盲注&#xff0c;上一题是布尔盲注&#xff0c;那这道题会不会是布尔盲注呢&#xff1f;&#xff1f;&#xff1…

基于lighthouse搭建私有网盘Cloudreve【开源应用实践】

基于lighthouse搭建私有网盘Cloudreve【超高性价比】 今天给大家分享一款私人网盘神器&#xff0c;既能存放你的文件文档&#xff0c;也能替你保存那不可告人的秘密~ 香菇今天将手把手教给大家如何在腾讯云轻量应用服务器上搭建个人专属网盘 1. 既爱又恨的网盘存储 很多小伙伴…

【EasyExcel】复杂导出操作-自定义颜色样式等(版本3.1.x)

文章目录 前言一、自定义拦截器二、自定义操作1.自定义颜色2.合并单元格 三、复杂操作示例1.实体(使用了注解式样式)&#xff1a;2.自定义拦截器3.代码4.最终效果 前言 本文简单介绍阿里的EasyExcel的复杂导出操作&#xff0c;包括自定义样式&#xff0c;根据数据合并单元格等。…

ubuntu22.04与ubuntu24.10使用Remmina远程桌面共享

1. ubuntu22.04启用远程桌面共享 点击Remote Desktop,按下图设置 成功启用 2.ubuntu24.10远程桌面启用 选择远程桌面选项 启用远程桌面共享与远程控制 启用远程登陆

【Python · PyTorch】卷积神经网络(基础概念)

【Python PyTorch】卷积神经网络 CNN&#xff08;基础概念&#xff09; 0. 生物学相似性1. 概念1.1 定义1.2 优势1.2.1 权重共享1.2.2 局部连接1.2.3 层次结构 1.3 结构1.4 数据预处理1.4.1 标签编码① One-Hot编码 / 独热编码② Word Embedding / 词嵌入 1.4.2 归一化① Min-…

3D电子商务是什么?如何利用3D技术提升销售转化?

在数字化浪潮席卷全球的今天&#xff0c;网上购物已成为消费者日常生活中不可或缺的一部分。然而&#xff0c;尽管其便捷性无可比拟&#xff0c;但传统电商模式中的“看不见、摸不着”问题始终困扰着消费者与商家。商品是否符合期望、尺寸是否合适、颜色是否真实……这些不确定…