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