如何获取存储在unique_ptr中的数组大小?

时间:2014-03-26 13:21:40

标签: arrays c++11 stdvector unique-ptr

如果我这样做:

std::unique_ptr<int[]> uparr(new int[1984]);

我将uparr传递给某人而没有将1984传递给他们,他们能看到它有多少元素吗?
对于数组的unique_ptr,又有相当于vector的.size()吗?

2 个答案:

答案 0 :(得分:7)

不,没有。动态数组是一种有点缺陷的语言功能。你基本上总是希望/需要单独传递数组长度(除非你有某种哨兵政策)。所以你不妨使用std::vector(如果你不介意容量的额外词)。

答案 1 :(得分:4)

不,信息丢失了。

如果需要跟踪它,请使用向量,或者如果您确实不想要额外的服务,请在分配的数组周围编写一个小包装器。例如,您可以查看基于c ++ 1y标准的std::dynarray提案。