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 容器,避免手动实现链表、树等结构,除非有特殊需求。
相关推荐
earthzhang20212 小时前
【1028】字符菱形
c语言·开发语言·数据结构·c++·算法·青少年编程
papership2 小时前
【入门级-算法-3、基础算法:二分法】
数据结构·算法
hjlgs2 小时前
Linux中双向链表介绍
数据结构·链表
earthzhang20214 小时前
第3讲:Go垃圾回收机制与性能优化
开发语言·jvm·数据结构·后端·性能优化·golang
AA陈超4 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-08 UI 部件数据表
c++·游戏·ue5·游戏引擎·虚幻
apocelipes4 小时前
golang unique包和字符串内部化
java·python·性能优化·golang
纵有疾風起5 小时前
C++——类和对象(3)
开发语言·c++·经验分享·开源
Full Stack Developme5 小时前
java.text 包详解
java·开发语言·python
刘梦凡呀6 小时前
C#获取钉钉平台考勤记录
java·c#·钉钉
承渊政道6 小时前
动态内存管理
c语言·c++·经验分享·c#·visual studio