1

我想在指针和静态分配的数组上使用 STL 算法,但它们都需要迭代器。是否有任何迭代器可以采用数组和长度并让我使用它?

PS 我知道arrayC++0x 中的类,但我不想使用它。

4

2 回答 2

13

指针随机访问迭代器!您可以简单地传递一个指向数组开头的指针,以及一个指向末尾的指针。像这样的函数(包含在 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; }
于 2012-08-14T19:53:59.183 回答
3

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

int a[5] = .....;
std::for_each( a, ar + 5, someFunctor() );
于 2012-08-14T19:54:35.413 回答