vector<int> vec;
boost::scoped_array<int> scpaInts;

scpaInts.reset(new int[10]);

for (int i=0; i<10; i++)
    scpaInts[i] = i*2;

vec.assign(&scpaInts[0], &scpaInts[9]+1);      // => method one
vec.assign(scpaInts.get(), scpaInts.get()+10); // => method two

问题1>
我想出了两种方法。但是我不确定它们是正确的还是有更好的方法来做到这一点。

问题2>确实无法从boost::scoped_array获得有效长度吗?

谢谢

最佳答案

问题1:两种方法都可以。指向数组元素的指针可以起到随机访问迭代器的作用。这个也很好

vec.assign(&scpaInts[0], &scpaInts[10]);

问题2:确实如此,原因是您无法获得传递给函数的C样式数组的长度。

09-27 15:51