Custom iterators in C++ enable you to define how to traverse your own data structures. This can be useful for collections or classes that require a specific iteration behavior. Below is a simple example of creating a custom iterator for a container class.
#include <iostream>
#include <iterator>
#include <vector>
class MyContainer {
public:
using iterator = std::vector<int>::iterator;
void add(int value) {
data.push_back(value);
}
iterator begin() {
return data.begin();
}
iterator end() {
return data.end();
}
private:
std::vector<int> data;
};
int main() {
MyContainer container;
container.add(1);
container.add(2);
container.add(3);
for (auto it = container.begin(); it != container.end(); ++it) {
std::cout << *it << std::endl;
}
return 0;
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?