我想在指针和静态分配的数组上使用 STL 算法,但它们都需要迭代器。是否有任何迭代器可以采用数组和长度并让我使用它?
PS 我知道array
C++0x 中的类,但我不想使用它。
指针是随机访问迭代器!您可以简单地传递一个指向数组开头的指针,以及一个指向末尾的指针。像这样的函数(包含在 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() );