您如何迭代boost::shared_array
中的项目?你会对它进行get()
并使用原始指针作为迭代器吗?
答案 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
来获取元素。