C++ STL详解:从vector到map

需积分: 15 3 下载量 163 浏览量 更新于2024-07-23 收藏 299KB PDF 举报
"C++中STL使用总结" C++中的STL(Standard Template Library,标准模板库)是C++编程中不可或缺的一部分,它提供了一系列高效且功能强大的容器、算法和迭代器,使得开发者能够更方便地管理和操作数据。这篇文档详细总结了C++ STL中的常用容器,包括vector、stack、queue、priority_queue、deque、list、bitset、set、multiset、map和multimap,以及string的基本操作。 1. vector向量容器:vector是最常见的动态数组,可以方便地在两端添加或删除元素。创建vector对象可以通过`std::vector<类型> name;`。向尾部扩张可以用`push_back()`,插入元素有`insert()`,删除元素使用`erase()`,获取大小用`size()`,迭代器访问元素为`begin()`和`end()`,`reverse()`函数用于反向排列,`sort()`则用于排序。 2. stack堆栈容器:stack模拟了后进先出(LIFO)的数据结构,创建stack对象需指定基础容器,如`std::stack<类型, std::vector<类型>> name;`。元素入栈用`push()`, 读取栈顶元素但不删除用`top()`, 出栈用`pop()`, 查询大小用`size()`,检查是否为空用`empty()`。 3. queue队列容器:queue模拟了先进先出(FIFO)的数据结构,创建queue对象同样需要指定基础容器,如`std::queue<类型, std::deque<类型>> name;`。读取队首元素但不删除用`front()`, 队尾元素通常不可读,队列大小用`size()`,是否为空用`empty()`,元素入队用`push()`,出队用`pop()`。 4. priority_queue优先队列容器:优先队列根据优先级顺序出队,定义时需指定元素比较方式。元素入队和出队与queue类似,但出队的总是优先级最高的元素。大小、读取队首元素和判断是否为空的操作也与queue一致。 5. deque双端队列容器:deque允许在两端进行快速插入和删除,创建方法类似vector。除了常规的插入和删除操作外,它还支持前向和反向遍历。 6. list双向链表容器:list支持快速的中间插入和删除,创建list对象如`std::list<类型> name;`。插入和删除元素、排序、剔除重复元素及查找元素都有相应的成员函数。 7. bitset位集合容器:bitset用于存储和操作二进制位,创建如`std::bitset<位数> name;`,可以设置或查询单个位。 8. set集合容器:set是一个唯一的元素集合,创建set对象如`std::set<类型> name;`,插入、删除和查找元素,以及自定义比较函数都是其核心操作。 9. multiset多重集合容器:multiset允许元素重复,操作方式与set类似,但插入元素可以重复。 10. map映照容器:map是一个键值对的集合,创建map对象如`std::map<键类型, 值类型> name;`,插入、删除元素以及查找元素和自定义比较函数是其主要操作。 11. multimap多重映照容器:multimap与map类似,但键值对可以重复。 12. string基本字符系列容器:string类提供了字符串操作,创建如`std::string name;`,包括插入、删除、查找、比较等字符串处理功能。 通过理解和熟练运用这些容器,开发者可以有效地组织和操作数据,提高代码的效率和可维护性。
2016-05-15 上传