Код: Выделить всё
template
class Stack {
T arr[SIZE];
size_t pos = 0;
public:
T pop() {
return arr[--pos];
}
Stack& push(const T& t) {
arr[pos++] = t;
return *this;
}
auto begin() {
return std::reverse_iterator(arr+pos);
}
auto end() {
return std::reverse_iterator(arr);
// ^ does reverse_iterator take this `one back`? how?
}
};
int main() {
Stack s;
s.push(5).push(15).push(25).push(35);
for(int val: s) {
std::cout в качестве адаптера для другого итератора, недавно адаптированный end < /em> должен быть один Перед оригиналом begin . Однако вызов std :: prev Как std :: reverse_iterator удерживает один перед началом?
Подробнее здесь: https://stackoverflow.com/questions/676 ... fore-begin