Skip to content

Instantly share code, notes, and snippets.

@2bbb
Created December 13, 2015 12:12
Show Gist options
  • Select an option

  • Save 2bbb/703f11d1f13498d87663 to your computer and use it in GitHub Desktop.

Select an option

Save 2bbb/703f11d1f13498d87663 to your computer and use it in GitHub Desktop.
iterator
#include <iostream>
#include <string>
#include <vector>
struct custom_vectroid {
using data_type = std::vector<std::string>;
data_type data;
using iterator = data_type::iterator;
using const_iterator = data_type::const_iterator;
using reverse_iterator = data_type::reverse_iterator;
using const_reverse_iterator = data_type::const_reverse_iterator;
iterator begin() { return data.begin(); }
iterator end() { return data.end(); }
const_iterator begin() const { return data.begin(); }
const_iterator end() const { return data.end(); }
// from C++11
const_iterator cbegin() const { return data.cbegin(); }
const_iterator cend() const { return data.cend(); }
reverse_iterator rbegin() { return data.rbegin(); }
reverse_iterator rend() { return data.rend(); }
const_reverse_iterator rbegin() const { return data.rbegin(); }
const_reverse_iterator rend() const { return data.rend(); }
// from C++11
const_reverse_iterator crbegin() const { return data.crbegin(); }
const_reverse_iterator crend() const { return data.crend(); }
};
int main(int argc, char *argv[]) {
custom_vectroid v;
v.data = {"A", "Happy", "New", "Year", "2016"};
for(auto i : v) {
std::cout << i << std::endl;
}
return EXIT_SUCCESS;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment