C++封装数据结构
1.概论
C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。
2.常见封装
1.容器(Containers):
- std::vector: 动态数组,支持随机访问,可以高效添加和删除元素。
链接:https://www.cnblogs.com/trmbh12/p/17787279.html - std::list: 双向链表,支持快速插入和删除元素。
链接:https://www.cnblogs.com/trmbh12/p/17787408.html - std::deque: 双端队列,支持快速随机访问和在两端添加/删除元素。
- std::set 和 std::multiset: 有序集合,不允许重复元素。
- std::map 和 std::multimap: 关联容器,以键值对形式存储数据。
- std::unordered_set, std::unordered_multiset, std::unordered_map, 和 std::unordered_multimap: 无序关联容器,使用哈希表实现。
- std::stack: 栈数据结构,后进先出(LIFO)。
- std::queue: 队列数据结构,先进先出(FIFO)。
- std::priority_queue: 优先级队列,可以按照优先级高低访问元素。
2.迭代器(Iterators):
STL容器通常提供迭代器,允许遍历容器中的元素。迭代器有不同的类型,如正向迭代器、反向迭代器、常量迭代器等。
3.算法
STL提供了大量算法,包括排序、搜索、转换、归约、拷贝、移动等。这些算法可以用于各种容器。
一些常见的算法包括 std::sort, std::find, std::binary_search, std::transform, std::accumulate 等。
4.函数对象(Function Objects):
STL允许你创建自定义的函数对象(通常称为谓词),以在算法中指定特定的行为。例如,你可以自定义排序规则来使用 std::sort。
迭代器适配器(Iterator Adapters):
5.迭代器适配器(Iterator Adapters):
STL提供了迭代器适配器,如 std::back_inserter, std::front_inserter 和 std::inserter,用于在容器中执行插入操作。
6.智能指针(Smart Pointers):
std::shared_ptr, std::unique_ptr, 和 std::weak_ptr 提供了内存管理的智能指针,有助于防止内存泄漏和管理资源。
字符串和字符处理:
7.字符串和字符处理:
std::string 提供了字符串操作的高级接口,包括字符串连接、查找、替换等。
8.输入/输出流:
std::cin, std::cout, std::ifstream, std::ofstream, std::stringstream 等用于输入和输出的流对象。