在 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 容器,避免手动实现链表、树等结构,除非有特殊需求。