如何为一个名为Stack的模板化类编写end函数,使用数组实现超出数组边界的那个?
这是我当前的end()函数:
template<typename T>
StackIterator<T> Stack<T>::end() const
{
//iterator takes a stack and an item of type <T>
StackIterator<T> goodBye(*this, items[-1]);
return goodBye;
}//end end function
这个当前的实现将适用于原始类型,但抛出一个 与字符串一起使用时,内存位置(...)的bad_alloc。
关于如何使这种更多功能的任何想法?
答案 0 :(得分:0)
不应该是items[-1]
。对于大小为n的数组,它应为items[n]
。在C ++ 11中,您可以找到可以完成此任务的std::end
。
当然,你可以使用std::stack
......但是嘿。
编辑:普通意义上的迭代仅适用于一个方向上的本机数组。如果您希望反向遍历本机数组,则必须从前向[begin, end)
范围开始,并从那里实现反向迭代。