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()
函数,返回相应类型的迭代器。
❗例外或特殊情况
-
stack
、queue
、priority_queue
不是标准容器,而是 容器适配器(container adapters),它们本质上是用其他容器封装出来的,所以:-
它们不提供迭代器接口(没有
.begin()
或.end()
),因为 STL 设计上认为它们的用途不需要迭代器。
-
-
std::array
与C-style array
区分:-
std::array
是容器,有迭代器。 -
C 风格数组如
int arr[10]
不是 STL 容器,没有迭代器。 -
补充:迭代器类型
不同容器的迭代器能力不同:
容器 迭代器类型 vector
,deque
,array
RandomAccessIterator list
,set
,map
等BidirectionalIterator forward_list
ForwardIterator unordered_xxx
ForwardIterator
✅ 小结
-
所有 标准容器 都有迭代器。
-
容器适配器(如
stack
,queue
)没有迭代器。 -
如果你需要迭代访问
stack
等,可以访问其底层容器(如std::stack<T, std::vector<T>>
中的.c
),但这属于非标准用法。 -
如需查看容器是否支持迭代器,可以看它是否定义了
container.begin(); container.end();
-