STL 是否包含处理数组的迭代器

Does the STL include an iterator that works on arrays?

本文关键字:迭代器 数组 处理 是否 包含 STL      更新时间:2023-10-16

我想在指针和静态分配的数组上使用STL算法,但它们都需要迭代器。有没有迭代器会接受数组和长度并让我使用它?

附言我知道 C++0x 中的array类,但我不想使用它。

指针

随机访问迭代器!您可以简单地传递一个指向数组开头的指针,以及一个指向数组末尾的指针。像这样的函数(包含在 C+11 中)可能会派上用场:

template <typename T, std::size_t N>
T* begin(T(&array)[N]) { return array; }
template <typename T, std::size_t N>
T* end(T(&array)[N]) { return begin(array) + N; }

您可以直接使用该数组。例如

int a[5] = .....;
std::for_each( a, ar + 5, someFunctor() );