C++ 算法 fill() 函数用于使用 operator= 为指定范围 [first, end) 中的每个元素分配相同的新值。
注:Range [first, last) 表示范围内包含first,不包含last。
用法
template <class ForwardIterator, class T>
void fill (ForwardIterator first, ForwardIterator last, const T& val);
参数
first:一个前向迭代器,指向指定范围内第一个元素的位置。
last:一个前向迭代器,指向要遍历的范围中最后一个元素之后的位置。
val:要分配给范围 [first, last) 中元素的值。
返回值
空
复杂度
复杂性在 first 和 last 内的距离以及每个元素的分配上是线性的。
数据竞争
范围 [first1, last1) 中的对象被修改,其中每个对象只被访问一次。
异常安全
此函数抛出异常元素赋值或迭代器上的操作抛出异常。
请注意,无效参数会导致未定义的行为。
例子1
让我们看一个简单的例子来演示 fill() 的使用:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v(5);
fill(v.begin(), v.end(), 2);
for_each(v.begin(), v.end(), [](int x) { cout << x << ","; });
return 0;
}
输出:
2,2,2,2,2,
例子2
让我们看另一个简单的例子:
#include <iostream> // std::cout
#include <algorithm> // std::fill
#include <vector> // std::vector
using namespace std;
int main () {
vector<int> myvector (8); // myvector:0 0 0 0 0 0 0 0
fill (myvector.begin(),myvector.begin()+4,5); // myvector:5 5 5 5 0 0 0 0
fill (myvector.begin()+3,myvector.end()-2,8); // myvector:5 5 5 8 8 8 0 0
cout << "myvector contains:";
for (vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
cout << ' ' << *it;
cout << '\n';
return 0;
}
输出:
myvector contains:5 5 5 8 8 8 0 0
例子3
让我们看另一个简单的例子:
#include <vector>
#include <algorithm>
#include <iostream>
int main( )
{
using namespace std;
vector <int> v1;
vector <int>::iterator Iter1;
int i;
for ( i = 0 ; i <= 9 ; i++ )
{
v1.push_back( 5 * i );
}
cout << "Vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
// Fill the last 5 positions with a value of 2
fill( v1.begin( ) + 5, v1.end( ), 2 );
cout << "Modified v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
return 0;
}
输出:
Vector v1 = ( 0 5 10 15 20 25 30 35 40 45 ) Modified v1 = ( 0 5 10 15 20 2 2 2 2 2 )
示例 4
让我们看另一个简单的例子:
#include <algorithm>
#include <vector>
#include <iostream>
#include <iomanip>
using namespace std;
void print(const vector <int>& v)
{
vector <int>::const_iterator i;
for(i = v.begin(); i != v.end(); i++)
{
cout << setw(2) << *i << " ";
}
cout << endl;
}
int main()
{
int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
vector <int> v(arr, arr + sizeof(arr) / sizeof(int));
cout << "Vector before fill" << endl;
print(v);
fill(v.begin() + 4, v.end() - 3, -1);
cout << "Vector after fill" << endl;
print(v);
}
输出:
Vector before fill 0 1 2 3 4 5 6 7 8 9 Vector after fill 0 1 2 3 -1 -1 -1 7 8 9
相关用法
- C++ Algorithm fill_n()用法及代码示例
- C++ Algorithm remove_if()用法及代码示例
- C++ Algorithm remove()用法及代码示例
- C++ Algorithm max_element()用法及代码示例
- C++ Algorithm set_union()用法及代码示例
- C++ Algorithm next_permutation()用法及代码示例
- C++ Algorithm upper_bound()用法及代码示例
- C++ Algorithm minmax()用法及代码示例
- C++ Algorithm remove_copy_if()用法及代码示例
- C++ Algorithm random_shuffle()用法及代码示例
- C++ Algorithm pop_heap()用法及代码示例
- C++ Algorithm replace()用法及代码示例
- C++ Algorithm set_intersection()用法及代码示例
- C++ Algorithm lower_bound()用法及代码示例
- C++ Algorithm transform()用法及代码示例
- C++ Algorithm set_difference()用法及代码示例
- C++ Algorithm is_sorted()用法及代码示例
- C++ Algorithm equal_range()用法及代码示例
- C++ Algorithm minmax_element()用法及代码示例
- C++ Algorithm stable_sort()用法及代码示例
注:本文由纯净天空筛选整理自 C++ Algorithm fill()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。