如果我这样做:
std::unique_ptr<int[]> uparr(new int[1984]);
我将uparr
传递给某人而没有将1984
传递给他们,他们能看到它有多少元素吗?
对于数组的unique_ptr,又有相当于vector的.size()吗?
答案 0 :(得分:7)
不,没有。动态数组是一种有点缺陷的语言功能。你基本上总是希望/需要单独传递数组长度(除非你有某种哨兵政策)。所以你不妨使用std::vector
(如果你不介意容量的额外词)。
答案 1 :(得分:4)
不,信息丢失了。
如果需要跟踪它,请使用向量,或者如果您确实不想要额外的服务,请在分配的数组周围编写一个小包装器。例如,您可以查看基于c ++ 1y标准的std::dynarray
提案。