#include #include #include #include #include #include int main() { static_assert(std::contiguous_iterator::iterator>); static_assert(std::random_access_iterator::iterator>); static_assert(!std::contiguous_iterator::iterator>); static_assert(std::bidirectional_iterator::iterator>); static_assert(!std::random_access_iterator::iterator>); std::vector values{1, 2, 3, 4, 5}; for (auto it = values.begin(); it != values.end();) { if (*it % 2 == 0) { it = values.erase(it); } else { ++it; } } assert((values == std::vector{1, 3, 5})); std::list nodes{4, 8, 12}; auto a = nodes.begin(); auto b = a; ++b; assert(*a == 4 && *b == 8); assert(std::distance(nodes.begin(), nodes.end()) == 3); std::cout << values[0] << ' ' << values[1] << ' ' << values[2] << '\n'; }