Skip to content

Instantly share code, notes, and snippets.

@daverigby
Created November 22, 2018 11:13
Show Gist options
  • Save daverigby/ec4912c48116c05c72402cd89bd4957e to your computer and use it in GitHub Desktop.
Save daverigby/ec4912c48116c05c72402cd89bd4957e to your computer and use it in GitHub Desktop.
Checkpoint iterator model using raw reverse iterators (working)
#include <iostream>
#include <vector>
void print(const std::vector<int>& v) {
std::cout << "[";
for (auto& e : v) {
std::cout << e << " ";
}
std::cout << "]\n";
}
void getItemsForCursor(const std::vector<int>& v, std::vector<int>::reverse_iterator& rit) {
do {
rit--;
std::cout << *rit << " ";
} while (rit != v.rbegin());
std::cout << "\n";
}
int main() {
std::vector<int> v;
// Initially populate with 2 elements
v.push_back(1);
v.push_back(2);
v.push_back(3);
print(v);
// Creatre reverse_iterator to start (rend), advance backwards
auto rit = v.rend();
std::cout << "Iterate 1:\n";
getItemsForCursor(v, rit);
v.push_back(4);
print(v);
std::cout << "Iterate 2:\n";
getItemsForCursor(v, rit);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment