#include <iostream>
#include <vector>
#include <list>
#include <set>
#include <algorithm>
template<typename Container>
void printContainer(const Container& c, const std::string& name) {
std::cout << name << ": ";
for (auto it = c.begin(); it != c.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
}
int main() {
// Vector
std::vector<int> vec = {1, 2, 3, 4, 5};
printContainer(vec, "Vector");
// Modify vector using iterator
for (auto it = vec.begin(); it != vec.end(); ++it) {
*it *= 2;
}
printContainer(vec, "Modified Vector");
// List
std::list<int> lst = {10, 20, 30, 40, 50};
printContainer(lst, "List");
// Set
std::set<int> st = {5, 2, 8, 1, 9};
printContainer(st, "Set");
// Using std::find with iterator
auto it = std::find(vec.begin(), vec.end(), 6);
if (it != vec.end()) {
std::cout << "Found 6 at position: " << std::distance(vec.begin(), it) << std::endl;
}
// Reverse iterator
std::cout << "Vector in reverse: ";
for (auto rit = vec.rbegin(); rit != vec.rend(); ++rit) {
std::cout << *rit << " ";
}
std::cout << std::endl;
return 0;
}