迭代boost :: shared_array

时间:2013-03-13 08:49:19

标签: c++ boost c++98

您如何迭代boost::shared_array中的项目?你会对它进行get()并使用原始指针作为迭代器吗?

2 个答案:

答案 0 :(得分: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 << ',';
    }
}

无论如何,你需要自己做一个数组大小的bookeeping。

答案 1 :(得分:2)

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