📜  C++ STL中的fill()和fill_n()函数

📅  最后修改于: 2021-05-25 23:41:02             🧑  作者: Mango

向量一旦声明,其所有值都将初始化为零。下面是一个示例代码来演示相同的内容。

// C++ program for displaying the default initialization
// of the vector vect[]
#include
using namespace std;
  
int main() 
{
    // Creating a vector of size 8
    vector vect(8);  
  
    // Printing default values
    for (int i=0; i

输出 :

0 0 0 0 0 0 0 0

如果我们希望将向量初始化为特定值,例如1,该怎么办?为此,我们可以将值与向量的大小一起传递。

// C++ program for displaying specified initialization
// of the vector vect[]
#include
using namespace std;
  
int main () 
{
    // Creates a vector of size 8 with all initial
    // values as 1.
    vector vect(8, 1);  
  
    for (int i=0; i

输出 :

1 1 1 1 1 1 1 1

如果我们希望将前4个值初始化为100并将其余6个值初始化为200怎么办?
一种方法是手动为向量中的每个位置提供一个值。 STL中提供的其他方法(标准模板库)是fill和fill_n。

  • 充满()
    “填充”函数将值“ val”分配给[begin,end)范围内的所有元素,其中“ begin”是初始位置,“ end”是最后位置。

    注意:请注意,“ begin”已包含在范围内,但“ end”未包含在内。以下是演示“填充”的示例:

    // C++ program to demonstrate working of fill()
    #include 
    using namespace std;
      
    int main ()
    {
      vector vect(8);
      
      // calling fill to initialize values in the
      // range to 4
      fill(vect.begin() + 2, vect.end() - 1, 4);
      
      for (int i=0; i

    输出 :

    0 0 4 4 4 4 4 0
    
  • fill_n()
    在fill_n()中,我们指定开始位置,要填充的元素数和要填充的值。以下代码演示了fill_n的用法。
    // C++ program to demonstrate working of fil_n()
    #include 
    using namespace std;
      
    int main()
    {
        vector vect(8);  
      
        // calling fill to initialize first four values
        // to 7
        fill_n(vect.begin(), 4, 7);
      
        for (int i=0; i

    输出 :

    7 7 7 7 0 0 0 0
     7 7 7 4 4 4 0 0
    
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”