STL 迭代器

STL(Standard Template Library)中的所有标准容器都有迭代器(iterator)

标准容器(Standard Containers)都支持迭代器

包括以下容器:

容器类型容器名称
顺序容器vector, deque, list, forward_list, array
关联容器set, multiset, map, multimap
无序容器unordered_set, unordered_multiset, unordered_map, unordered_multimap

这些容器都定义了 begin()end() 函数,返回相应类型的迭代器。


❗例外或特殊情况

  1. stackqueuepriority_queue 不是标准容器,而是 容器适配器(container adapters),它们本质上是用其他容器封装出来的,所以:

    • 它们不提供迭代器接口(没有 .begin().end()),因为 STL 设计上认为它们的用途不需要迭代器。

  2. std::arrayC-style array 区分

    • std::array 是容器,有迭代器。

    • C 风格数组如 int arr[10] 不是 STL 容器,没有迭代器。

    • 补充:迭代器类型

      不同容器的迭代器能力不同:

      容器迭代器类型
      vector, deque, arrayRandomAccessIterator
      list, set, mapBidirectionalIterator
      forward_listForwardIterator
      unordered_xxxForwardIterator


      ✅ 小结

    • 所有 标准容器 都有迭代器。

    • 容器适配器(如 stack, queue)没有迭代器。

    • 如果你需要迭代访问 stack 等,可以访问其底层容器(如 std::stack<T, std::vector<T>> 中的 .c),但这属于非标准用法。

    • 如需查看容器是否支持迭代器,可以看它是否定义了

      container.begin(); container.end();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值