Итерировать над boost :: shared_array

Как бы вы перебрали элементы в boost::shared_array? Вы бы сделали get() на нем и использовать необработанный указатель в качестве итератора?

3

Решение

Так как вы уже используете 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 << ',';
}
}

В любом случае вам нужно сделать свою собственную поддержку размера массива.

3

Другие решения

Видя, что вы уже знаете размер массива по тому факту, что он должен быть выделен перед созданием boost::shared_arrayЕдинственный способ повторить это — использовать обычный for цикл, а затем использовать operator[i] на boost::shared_array чтобы получить элемент.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector