What are the vector.begin() and vector.end() functions in C++?
The begin() function
The begin() function is used to get the iterator that points to the first element of a vector. This function is available in the <vector> header file.
Parameters
The begin() function does not accept any parameters.
Return value
This function returns an iterator that points to the first element in the vector. We can dereference the returned iterator and get the first element in the vector. If the vector is empty, the iterator cannot be dereferenced.
Code
Let’s look at the code and see how the begin() function is used.
#include <iostream>#include <vector>using namespace std;int main() {vector<int> vec = {1,2,3,4,5,6,7,8,9,10};vector<int> empty_vec = {};auto it = vec.begin();cout << *it;// cout << "\n";// auto empty_vec_it = empty_vec.begin();// cout << *empty_vec_it;return 0;}
# Explanation
- In lines 1 and 2, we import the required packages.
- In lines 6 and 7, we create two vectors, one contains integers and the other is empty.
- In line 8, we call the
begin()function. - In line 9, we dereference the iterator to get the first element of the vector.
- If you uncomment the lines 10 to 13, you will get an error because the vector is empty and the iterator cannot be dereferenced.
The end() function
The end() function is used to get the iterator that points to the one-past-the-last element of the vector. This function is available in the <vector> header file.
Parameters
The end() function does not accept any parameters.
Return value
This function returns an iterator that points to the one-past-the-last element in the vector. If we dereference the returned vector, we would get a garbage value.
To get the last element, we need to subtract 1 from the returned iterator, i.e., go back by one position. If the vector is empty, then the iterator cannot be dereferenced.
Code
Now, let’s look at the code and see how the end() function is used.
#include <iostream>#include <vector>using namespace std;int main() {vector<int> vec = {1,2,3,4,5,6,7,8,9,10};vector<int> empty_vec = {};auto it = vec.end();cout << *(it - 1);// cout << "\n";// auto empty_vec_it = empty_vec.end();// cout << *empty_vec_it;return 0;}
# Explanation
- In lines 1 and 2, we import the required packages.
- In lines 6 and 7, we create two vectors, one contains integers and the other one is empty.
- In line 8, we call the
end()function. - In line 9, we dereference the iterator and subtract one to get the last element of the vector.
- If you uncomment lines 10 to 13, you will get an error, because the vector is empty and the iterator cannot be dereferenced.
Where can these functions be used?
The begin() and end() functions are utilized when in-built functions in C++ are used to pass the start and end iterator to those functions. Some examples of such functions are sort(), max_element(), min_element(), etc.