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 容器,避免手动实现链表、树等结构,除非有特殊需求。
相关推荐
兔兔西2 小时前
【数据结构、java学习】数组(Array)
java·数据结构·算法
是2的10次方啊2 小时前
并发容器的艺术:从ConcurrentHashMap到BlockingQueue的完美协奏
java
007php0072 小时前
Go语言面试:传值与传引用的区别及选择指南
java·开发语言·后端·算法·面试·golang·xcode
小徐不徐说2 小时前
数据结构基础之队列:数组/链表
c语言·数据结构·算法·链表·面试
algonaut3 小时前
adobe acrobat 安装到使用再到PDF编辑【适合小白,只看一篇就够!!!】
java·开发语言·其他·pdf
boonya3 小时前
Java JVM核心原理与面试题解析
java·开发语言·jvm
g_i_a_o_giao3 小时前
Android8 binder源码学习分析笔记(一)
android·java·笔记·学习·binder·安卓源码分析
源雀数智3 小时前
源雀SCRM开源:企微文件防泄密
java·人工智能·企业微信·流量运营
Meteors.3 小时前
23种设计模式——装饰器模式(Decorator Pattern)详解
java·设计模式·装饰器模式