C++_数据类型和数据结构

在 C++ 中,数据类型和数据结构是两个相关但不同的概念:

复制代码
数据类型(Data Types):指变量的类型,如 int、double、char 等,用于定义数据的取值范围和操作。
数据结构(Data Structures):是组织和存储多个数据的方式,如数组、链表、栈等。

你问的是"C++中常见数据类型的数据结构",这里理解为:C++ 中用于组织和管理各种数据类型的常见数据结构,尤其是标准库(STL)中提供的容器。

✅ C++ 中常见的数据结构(以 STL 容器为主)

C++ 标准模板库(STL)提供了丰富的数据结构,它们可以存储任意数据类型(如 int、double、string、自定义类等)。

一、序列式容器(Sequence Containers)

元素按线性顺序排列,可通过位置访问。

复制代码
📌 示例:
cpp 复制代码
    std::vector<int> vec = {1, 2, 3};
    std::list<std::string> names = {"Alice", "Bob"};

二、关联式容器(Associative Containers)

基于平衡二叉搜索树实现,自动排序,查找效率高(O(log n))。

复制代码
📌 示例:
cpp 复制代码
    std::map<std::string, int> ageMap;
    ageMap["Alice"] = 25;

    std::set<double> numbers = {3.14, 2.71, 1.41};

三、无序关联式容器(Unordered Associative Containers)

基于**哈希表(Hash Table)**实现,平均查找时间 O(1),不排序。

复制代码
📌 示例:
cpp 复制代码
    std::unordered_map<std::string, std::string> phonebook;
    phonebook["Alice"] = "123-4567";

四、容器适配器(Container Adapters)

基于其他容器实现的"高级"数据结构。

复制代码
📌 示例:
cpp 复制代码
 std::stack<int> s;
 s.push(10);
 s.pop();

五、其他重要结构

复制代码
std::string
    虽然是字符串类型,但本质是 char 的动态数组(类似 vector<char>)。
    提供了丰富的字符串操作。

std::pair 和 std::tuple
    pair<int, string>:存储两个不同类型的数据。
    tuple<int, string, double>:存储多个不同类型的数据。

C 风格数组(原生数组)
    int arr[10];
    不推荐直接使用,建议用 std::array 或 std::vector。

✅ 如何选择合适的数据结构?

总结

C++ 中的数据结构主要通过 STL 容器实现,它们可以存储任意数据类型(int、double、class 等),并提供高效的插入、删除、查找操作。

掌握这些容器的特性(时间复杂度、内存开销、是否有序等)是写出高效 C++ 程序的关键。

复制代码
💡 建议:优先使用 STL 容器,避免手动实现链表、树等结构,除非有特殊需求。
相关推荐
oak隔壁找我2 小时前
JVM常用调优参数
java·后端
蝎子莱莱爱打怪7 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
狼爷8 小时前
Go 没有 override?别硬套继承!用接口+嵌入,写更清爽的“覆盖”逻辑
java·go
小兔崽子去哪了11 小时前
Java 自动化部署
java·后端
ma_king11 小时前
入门 java 和 数据库
java·数据库·后端
后端AI实验室11 小时前
我用Cursor开发了3个月,整理出这套提效4倍的工作流
java·ai
码路飞15 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
SimonKing16 小时前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员
Seven9717 小时前
剑指offer-80、⼆叉树中和为某⼀值的路径(二)
java
怒放吧德德1 天前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty