3

您将如何迭代 a 中的项目boost::shared_array?你会get()在上面做 a 并使用原始指针作为迭代器吗?

4

2 回答 2

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 << ',';
    }
}

在任何情况下,您都需要自己记录数组的大小。

于 2013-03-13T09:01:38.947 回答
2

看到您已经知道数组的大小,因为它必须在创建之前分配boost::shared_array,我看到迭代它的唯一方法是使用普通for循环,然后使用operator[i]onboost::shared_array来获取元素。

于 2013-03-13T08:54:06.047 回答