所以我一直在看这个网站上的代码:https://www.geeksforgeeks.org/program-to-create-custom-vector-class-in-c/.但我在理解这一部分时遇到了问题:
template <typename DT>
DT GenericMyVector<DT>::pop_back()
{
return arr[length-- - 1];
}
我知道这会将int length
降低一,并且当您调用函数大小时,它会减小一。但我的问题是:- 1
做什么?既然数组的大小是固定的,这如何降低向量占用的内存量?最后一个元素究竟是如何弹出的?
length--
的求值结果为长度值(求值后递减(。所以您正在访问的项目是arr[length - 1]
。您需要-1,因为数组索引从零开始。
更容易将代码想象为:
template <typename DT>
DT GenericMyVector<DT>::pop_back()
{
DT value = arr[length - 1];
length--;
return value;
}