Как бы вы перебрали элементы в boost::shared_array
? Вы бы сделали get()
на нем и использовать необработанный указатель в качестве итератора?
Так как вы уже используете boost, может быть так:
#include <boost/shared_array.hpp>
#include <boost/range.hpp>
#include <iostream>
int main()
{
boost::shared_array<int> arr(new int[10]());
int* ptr = arr.get();
for (int i : boost::make_iterator_range(ptr, ptr+10))
{
std::cout << i << ',';
}
}
В любом случае вам нужно сделать свою собственную поддержку размера массива.
Видя, что вы уже знаете размер массива по тому факту, что он должен быть выделен перед созданием boost::shared_array
Единственный способ повторить это — использовать обычный for
цикл, а затем использовать operator[i]
на boost::shared_array
чтобы получить элемент.