在pop_back函数中,我想返回最后一个元素并将其删除。如果我尝试删除(m_array [m_size - 1]),我得到C2541:删除不能删除不是指针的对象。 什么是从数组中删除最后一个元素的正确方法?我正在用C++编写一个Vector类,使用数组。
template <typename T>
class mvector
{
private:
T *m_array;
int m_size;
int m_reserved_size;
public:
T pop_back(); // decrease length by 1, returning the value removed from the vector
};
//Function Definition :
template <typename T>
T mvector<T>::pop_back()
{
delete(m_array[m_size - 1]);
m_size--;
return m_array[m_size - 1];
}
难道你不能'm_size - '这会使它看起来像项目被删除。你真的不需要删除它吗? –
是的,我想我会简单地做到这一点,并覆盖push_back()上的内容。这解决了它。 Thankyou –
注意:这个'pop_back'不是异常安全的;如果在返回期间产生的'T'的副本抛出,则该元素不可挽回地丢失。出于这个原因,容器往往有'void pop_back()',调用者通过'back()'访问最后一个元素,然后在检索到值后调用'pop_back'。 –