Vector Operations in C++
Advanced Vector Operations in C++.
IntermediateSTL Containers ProgramsExample 2 of 10
vector-operations.cpp
1#include <iostream>2#include <vector>3#include <algorithm>4using namespace std;56int main() {7 vector<int> vec = {5, 2, 8, 1, 9, 3};89 cout << "Original vector: ";10 for (int num : vec) {11 cout << num << " ";12 }13 cout << endl;1415 // Sort vector16 sort(vec.begin(), vec.end());17 cout << "Sorted vector: ";18 for (int num : vec) {19 cout << num << " ";20 }21 cout << endl;2223 // Reverse vector24 reverse(vec.begin(), vec.end());25 cout << "Reversed vector: ";26 for (int num : vec) {27 cout << num << " ";28 }29 cout << endl;3031 // Find element32 auto it = find(vec.begin(), vec.end(), 5);33 if (it != vec.end()) {34 cout << "Element 5 found at index: " << distance(vec.begin(), it) << endl;35 }3637 // Insert element38 vec.insert(vec.begin() + 2, 100);39 cout << "\nAfter inserting 100 at index 2: ";40 for (int num : vec) {41 cout << num << " ";42 }43 cout << endl;4445 // Erase element46 vec.erase(vec.begin() + 2);47 cout << "After erasing element at index 2: ";48 for (int num : vec) {49 cout << num << " ";50 }51 cout << endl;5253 // Clear vector54 vec.clear();55 cout << "\nSize after clear: " << vec.size() << endl;56 cout << "Is empty: " << (vec.empty() ? "Yes" : "No") << endl;5758 return 0;59}
Output
Original vector: 5 2 8 1 9 3 Sorted vector: 1 2 3 5 8 9 Reversed vector: 9 8 5 3 2 1 Element 5 found at index: 2 After inserting 100 at index 2: 9 8 100 5 3 2 1 After erasing element at index 2: 9 8 5 3 2 1 Size after clear: 0 Is empty: Yes
What's going on
The program demonstrates advanced vector operations:
Sorting elements using sort()
Reversing vector using reverse()
Finding elements using find()
Inserting elements at specific positions
Erasing elements from vector
Clearing entire vector
These operations enable powerful vector manipulation.
Header Files Used
1.#include <iostream>
Provides cout and cin for input/output operations.
2.#include <vector>
Provides vector container class.
3.#include <algorithm>
Provides algorithms like sort(), reverse(), find().
Understanding Vector Operations
Operation Types
:
Sorting: arrange elements in order
Reversing: reverse element order
Finding: locate specific element
Inserting: add element at position
Erasing: remove element at position
Clearing: remove all elements
Iterators
:
begin(): points to first element
end(): points past last element
Used for range operations
Sorting Vector
Using sort()
:
sort(vec.begin(), vec.end());
How it works
:
Sorts elements in ascending order
Uses iterators to specify range
Modifies original vector
O(n log n) time complexity
Example
:
{5, 2, 8, 1, 9, 3} → {1, 2, 3, 5, 8, 9}
Reversing Vector
Using reverse()
:
reverse(vec.begin(), vec.end());
How it works
:
Reverses order of elements
First becomes last, last becomes first
Uses iterators for range
O(n) time complexity
Example
:
{1, 2, 3, 5, 8, 9} → {9, 8, 5, 3, 2, 1}
Finding Elements
Using find()
:
auto it = find(vec.begin(), vec.end(), 5);
How it works
:
Searches for value in range
Returns iterator to found element
Returns end() if not found
O(n) time complexity (linear search)
Checking Result
:
if (it != vec.end()) {
int index = distance(vec.begin(), it);
} else {
// Element not found
}
1// Element found
Inserting Elements
Using insert()
:
vec.insert(vec.begin() + 2, 100);
How it works
:
Inserts element at specified position
Shifts existing elements
Expensive for large vectors (O(n))
Position specified using iterator
Example
:
Before: {9, 8, 5, 3, 2, 1}
After insert at index 2: {9, 8, 100, 5, 3, 2, 1}
Erasing Elements
Using erase()
:
vec.erase(vec.begin() + 2);
How it works
:
Removes element at specified position
Shifts remaining elements
Expensive for large vectors (O(n))
Position specified using iterator
Example
:
Before: {9, 8, 100, 5, 3, 2, 1}
After erase at index 2: {9, 8, 5, 3, 2, 1}
Clearing Vector
Using clear()
:
vec.clear();
How it works
:
Removes all elements
Size becomes 0
Capacity may remain (implementation dependent)
O(n) time complexity
Checking Empty
:
vec.empty() // Returns true if size is 0
When to Use These Operations
Best For
:
Sorting: when order matters
Reversing: when reverse order needed
Finding: searching for specific values
Inserting: adding at specific positions
Erasing: removing specific elements
Clearing: resetting vector
Performance Considerations
:
insert()/erase(): expensive (O(n))
Use sparingly for large vectors
Prefer push_back()/pop_back() when possible
Consider other containers for frequent insert/erase
Important Considerations
Iterators
:
begin(): first element
end(): past last element
Used for range operations
Can be incremented/decremented
Performance
:
sort(): O(n log n)
reverse(): O(n)
find(): O(n)
insert()/erase(): O(n)
clear(): O(n)
Modifying Operations
:
Most operations modify original vector
Make copies if original needed
Be careful with iterator invalidation
return 0;
This ends the program successfully.