C++ 常见的STL容器

本文介绍了C++中的常用容器类,包括数组、向量、列表、队列、栈、集合和映射,详细阐述了它们的特点和用途。数组提供固定大小的存储,向量是动态数组,列表是双向链表,队列和栈分别是FIFO和LIFO结构,集合存储唯一元素,映射则用于键值对的关联。了解这些容器的特性和操作有助于开发者更高效地管理数据。
摘要由CSDN通过智能技术生成

C++中提供了许多容器类,包括数组、向量、列表、队列、栈、集合、映射等等。这些容器类具有不同的特性和用途,本文将对C++中常用的容器类进行详细介绍。

1. 数组 (array)

数组是一种在内存中连续存储数据的容器,所有元素的类型相同且大小固定。在C++11中引入了array容器,其具有如下特点:

  • 大小固定,创建时即指定数组大小,不支持动态扩容。
  • 支持快速随机访问,可以使用下标运算符或迭代器访问元素。
  • 支持STL算法和其他容器的大部分操作,如sort、swap、insert等。

以下是array容器常见的操作:

  • 定义array容器: std::array<int, 5> myArr={1,2,3,4,5};
  • 访问元素: myArr[0] 或者 myArr.at(0)
  • 获取容器大小: myArr.size()

2. 向量 (vector)

向量是一种动态数组,大小可以动态增加,也可以在任意位置插入或删除元素。向量在实现上使用动态分配的数组来存储元素,并且支持随机访问、快速插入和删除元素,因此是STL中最常用的容器之一。

以下是vector容器常见的操作:

  • 定义vector容器: std::vector<int> myVec={1,2,3,4,5};
  • 访问元素: myVec[0] 或者 myVec.at(0)
  • 添加元素: myVec.push_back(6) (在尾部添加元素)
  • 删除元素: myVec.erase(myVec.begin()+1) (删除第二个元素)
  • 获取容器大小: myVec.size()

3. 列表 (list)

列表是一种双向链表,与向量相比,列表支持高效的插入和删除元素,但不支持随机访问。列表实际上是由一系列节点组成的,每个节点都包含一个元素以及指向前后节点的指针。

以下是list容器常见的操作:

  • 定义list容器: std::list<int> myList={1,2,3,4,5};
  • 访问元素: 不支持随机访问,需要遍历链表来访问元素。
  • 添加元素: myList.push_back(6) (在尾部添加元素),myList.insert(myList.begin(), 0) (在头部添加元素)
  • 删除元素: myList.erase(myList.begin()+1) (删除第二个元素)
  • 获取容器大小: myList.size()

4. 队列 (queue)

队列是一种先进先出 (FIFO) 的容器,支持在队尾插入元素、在队头删除元素。队列由两个端点组成,一个是队尾 (back),一个是队头 (front)。

以下是queue容器常见的操作:

  • 定义queue容器: std::queue<int> myQueue;
  • 添加元素: myQueue.push(1) (在队尾添加元素)
  • 删除元素: myQueue.pop() (删除队头元素)
  • 获取队头和队尾元素: myQueue.front()myQueue.back()
  • 判断队列是否为空: myQueue.empty()

5. 栈 (stack)

栈是一种后进先出 (LIFO) 的容器,支持在栈顶插入和删除元素。栈实际上是由一系列元素组成的,最后一个加入的元素位于栈顶。

以下是stack容器常见的操作:

  • 定义stack容器: std::stack<int> myStack;
  • 添加元素: myStack.push(1) (在栈顶添加元素)
  • 删除元素: myStack.pop() (删除栈顶元素)
  • 获取栈顶元素: myStack.top()
  • 判断栈是否为空: myStack.empty()

6. 集合 (set)

集合是一种容纳互不相同元素的容器,支持快速的查找、插入和删除元素。集合的元素按照一定的顺序排列,通常是从小到大。

以下是set容器常见的操作:

  • 定义set容器: std::set<int> mySet={1,2,3,4,5};
  • 添加元素: mySet.insert(6)
  • 删除元素: mySet.erase(2)
  • 查找元素: mySet.find(3) (返回迭代器)
  • 获取集合大小: mySet.size()

7. 映射 (map)

映射是一种将键值对 (key-value) 相关联的容器,支持快速的查找、插入和删除元素。映射的键和值可以是任意类型,但每个键只能对应一个值。

以下是map容器常见的操作:

  • 定义map容器: std::map<string, int> myMap={{"A", 1}, {"B", 2}, {"C", 3}};
  • 添加键值对: myMap["D"] = 4
  • 删除元素: myMap.erase("B")
  • 查找元素: myMap.find("C") (返回迭代器)
  • 获取映射大小: myMap.size()

综上所述,以上就是七种常见的C++容器的详细介绍。不同的容器适用于不同的场景,开发者可以根据具体情况选择最适合的容器来处理数据。掌握这些容器的基本用法可以帮助我们更好地利用STL库来提高程序的效率和可读性。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值