C++ 算法 中的 fill函数

首页 / C++入门教程 / C++ 算法 中的 fill函数

C++算法 fill()函数用于通过使用operator =将相同的新值分配给指定参数内的每个元素[first,end)。

Note: Range[first,last)表示范围中包括first,但不包括last。

fill - 语法

template <class ForwardIterator, class T>
  void fill (ForwardIterator first, ForwardIterator last, const T& val);

fill - 参数

first:一个正向迭代器,指向指定参数内第一个元素的位置。

last:前向迭代器,指向要遍历参数中最后一个元素的位置。

val :要分配给[first,last)参数内的元素的值。

fill - 例子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,

fill - 例子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

fill - 例子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 )

fill - 例子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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Python核心技术与实战 -〔景霄〕

摄影入门课 -〔小麥〕

To B市场品牌实战课 -〔曹林〕

Linux内核技术实战课 -〔邵亚方〕

小马哥讲Spring AOP编程思想 -〔小马哥〕

说透区块链 -〔自游〕

攻克视频技术 -〔李江〕

超级访谈:对话汤峥嵘 -〔汤峥嵘〕

说透元宇宙 -〔方军〕

好记忆不如烂笔头。留下您的足迹吧 :)