# iterator

***

**1. Vector Iteration with Iterator**

```cpp
#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> vec = {1, 2, 3, 4, 5};
  vector<int>::iterator it;

  for (it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**2. String Iteration with Iterator**

```cpp
#include <iostream>
#include <string>

using namespace std;

int main() {
  string str = "Hello World";
  string::iterator it;

  for (it = str.begin(); it != str.end(); ++it) {
    cout << *it;
  }

  cout << endl;
  return 0;
}
```

**3. List Iteration with Iterator**

```cpp
#include <iostream>
#include <list>

using namespace std;

int main() {
  list<int> list1 = {1, 2, 3, 4, 5};
  list<int>::iterator it;

  for (it = list1.begin(); it != list1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**4. Array Iteration with Iterator**

```cpp
#include <iostream>
#include <array>

using namespace std;

int main() {
  int arr[] = {1, 2, 3, 4, 5};
  int* it;

  for (it = arr; it != arr + 5; ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**5. Map Iteration with Iterator**

```cpp
#include <iostream>
#include <map>

using namespace std;

int main() {
  map<string, int> map1 = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};
  map<string, int>::iterator it;

  for (it = map1.begin(); it != map1.end(); ++it) {
    cout << it->first << ": " << it->second << endl;
  }

  return 0;
}
```

**6. Unordered Map Iteration with Iterator**

```cpp
#include <iostream>
#include <unordered_map>

using namespace std;

int main() {
  unordered_map<string, int> map1 = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};
  unordered_map<string, int>::iterator it;

  for (it = map1.begin(); it != map1.end(); ++it) {
    cout << it->first << ": " << it->second << endl;
  }

  return 0;
}
```

**7. Set Iteration with Iterator**

```cpp
#include <iostream>
#include <set>

using namespace std;

int main() {
  set<int> set1 = {1, 2, 3, 4, 5};
  set<int>::iterator it;

  for (it = set1.begin(); it != set1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**8. Unordered Set Iteration with Iterator**

```cpp
#include <iostream>
#include <unordered_set>

using namespace std;

int main() {
  unordered_set<int> set1 = {1, 2, 3, 4, 5};
  unordered_set<int>::iterator it;

  for (it = set1.begin(); it != set1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**9. Queue Iteration with Iterator**

```cpp
#include <iostream>
#include <queue>

using namespace std;

int main() {
  queue<int> queue1;
  queue1.push(1);
  queue1.push(2);
  queue1.push(3);

  while (!queue1.empty()) {
    cout << queue1.front() << " ";
    queue1.pop();
  }

  cout << endl;
  return 0;
}
```

**10. Priority Queue Iteration with Iterator**

```cpp
#include <iostream>
#include <queue>

using namespace std;

int main() {
  priority_queue<int> pq;
  pq.push(3);
  pq.push(2);
  pq.push(1);

  while (!pq.empty()) {
    cout << pq.top() << " ";
    pq.pop();
  }

  cout << endl;
  return 0;
}
```

**11. Stack Iteration with Iterator**

```cpp
#include <iostream>
#include <stack>

using namespace std;

int main() {
  stack<int> stack1;
  stack1.push(1);
  stack1.push(2);
  stack1.push(3);

  while (!stack1.empty()) {
    cout << stack1.top() << " ";
    stack1.pop();
  }

  cout << endl;
  return 0;
}
```

**12. Deque Iteration with Iterator**

```cpp
#include <iostream>
#include <deque>

using namespace std;

int main() {
  deque<int> deque1;
  deque1.push_back(1);
  deque1.push_back(2);
  deque1.push_back(3);

  deque<int>::iterator it;

  for (it = deque1.begin(); it != deque1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**13. Forward List Iteration with Iterator**

```cpp
#include <iostream>
#include <forward_list>

using namespace std;

int main() {
  forward_list<int> list1 = {1, 2, 3, 4, 5};
  forward_list<int>::iterator it;

  for (it = list1.begin(); it != list1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**14. Array Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <array>

using namespace std;

int main() {
  array<int, 5> arr = {1, 2, 3, 4, 5};

  for (auto it = arr.begin(); it != arr.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**15. Vector Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> vec = {1, 2, 3, 4, 5};

  for (auto it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**16. List Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <list>

using namespace std;

int main() {
  list<int> list1 = {1, 2, 3, 4, 5};

  for (auto it = list1.begin(); it != list1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**17. Map Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <map>

using namespace std;

int main() {
  map<string, int> map1 = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};

  for (auto it = map1.begin(); it != map1.end(); ++it) {
    cout << it->first << ": " << it->second << endl;
  }

  return 0;
}
```

**18. Unordered Map Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <unordered_map>

using namespace std;

int main() {
  unordered_map<string, int> map1 = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};

  for (auto it = map1.begin(); it != map1.end(); ++it) {
    cout << it->first << ": " << it->second << endl;
  }

  return 0;
}
```

**19. Set Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <set>

using namespace std;

int main() {
  set<int> set1 = {1, 2, 3, 4, 5};

  for (auto it = set1.begin(); it != set1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**20. Unordered Set Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <unordered_set>

using namespace std;

int main() {
  unordered_set<int> set1 = {1, 2, 3, 4, 5};

  for (auto it = set1.begin(); it != set1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**21. Queue Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <queue>

using namespace std;

int main() {
  queue<int> queue1;
  queue1.push(1);
  queue1.push(2);
  queue1.push(3);

  for (auto it = queue1.begin(); it != queue1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**22. Priority Queue Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <queue>

using namespace std;

int main() {
  priority_queue<int> pq;
  pq.push(3);
  pq.push(2);
  pq.push(1);

  for (auto it = pq.begin(); it != pq.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**23. Stack Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <stack>

using namespace std;

int main() {
  stack<int> stack1;
  stack1.push(1);
  stack1.push(2);
  stack1.push(3);

  for (auto it = stack1.begin(); it != stack1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**24. Deque Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <deque>

using namespace std;

int main() {
  deque<int> deque1;
  deque1.push_back(1);
  deque1.push_back(2);
  deque1.push_back(3);

  for (auto it = deque1.begin(); it != deque1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**25. Forward List Iteration Using Iterator and For-Each Loop**

```cpp
#include <iostream>
#include <forward_list>

using namespace std;

int main() {
  forward_list<int> list1 = {1, 2, 3, 4, 5};

  for (auto it = list1.begin(); it != list1.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**26. Using Iterator to Insert and Delete Elements in Vector**

```cpp
#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> vec = {1, 2, 3, 4, 5};
  vector<int>::iterator it;

  // Insert element at the end
  it = vec.begin();
  vec.insert(it, 0);

  // Delete element at the beginning
  it = vec.begin();
  vec.erase(it);

  // Insert element at position 2
  it = vec.begin() + 2;
  vec.insert(it, 6);

  // Delete element at position 3
  it = vec.begin() + 3;
  vec.erase(it);

  for (it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**27. Using Iterator to Find Element in Vector**

```cpp
#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> vec = {1, 2, 3, 4, 5};
  vector<int>::iterator it;

  // Find element 3
  it = find(vec.begin(), vec.end(), 3);

  if (it != vec.end()) {
    cout << "Element found at position: " << (it - vec.begin()) << endl;
  } else {
    cout << "Element not found" << endl;
  }

  return 0;
}
```

**28. Using Iterator to Sort Vector**

```cpp
#include <iostream>
#include <vector>

using namespace std;

bool compare(int a, int b) {
  return a > b;
}

int main() {
  vector<int> vec = {1, 2, 3, 4, 5};
  vector<int>::iterator it;

  // Sort vector in descending order
  sort(vec.begin(), vec.end(), compare);

  for (it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**29. Using Iterator to Reverse Vector**

```cpp
#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> vec = {1, 2, 3, 4, 5};
  vector<int>::iterator it;

  // Reverse the vector
  reverse(vec.begin(), vec.end());

  for (it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << " ";
  }

  cout << endl;
  return 0;
}
```

**30. Using Iterator to Copy Vector**

```cpp
#include <iostream>
#include <vector>

using namespace std;

```
