How to assign a value to the first n elements of a vector? Say, I want to assign 1 to a vector from index 0 to index 4.
I already have a vector with size 11. Now I want to put 1 to the first 5 elements.
How to assign a value to the first n elements of a vector? Say, I want to assign 1 to a vector from index 0 to index 4.
I already have a vector with size 11. Now I want to put 1 to the first 5 elements.
You can use std::fill
or std::fill_n
:
std::fill(v.begin(), std::next(v.begin(), 5), 1);
std::fill_n(v.begin(), 5, 1);
Note: std::next
is C++11. In this case it can be replaced by v.begin() + 5
.
If you want to construct a vector filled like that, use the suitable constructor:
std::vector<int> v(5,1);
This creates 5 ints with value 1.
You can use std::fill
According to the documentation:
template< class ForwardIt, class T >
void fill(ForwardIt first, ForwardIt last, const T& value)
{
for (; first != last; ++first) {
*first = value;
}
}
You can do:
std::fill(v.begin(), v.begin() +5, 1) ;//assume you fill 1 from index 0 to 4(included)