當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C/C++ fill()、fill_n()用法及代碼示例


向量一經聲明,其所有值均初始化為零。下麵是一個示例代碼來演示相同的。

// C++ program for displaying the default initialization 
// of the vector vect[] 
#include<bits/stdc++.h> 
using namespace std; 
  
int main()  
{ 
    // Creating a vector of size 8 
    vector<int> vect(8);   
  
    // Printing default values 
    for (int i=0; i<vect.size(); i++) 
       cout << ' ' << vect[i]; 
}

輸出:

0 0 0 0 0 0 0 0


如果我們希望將向量初始化為特定值,例如1,該怎麽辦?為此,我們可以將值與向量的大小一起傳遞。


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

輸出:

1 1 1 1 1 1 1 1


如果我們希望將前4個值初始化為100並將其餘6個值初始化為200怎麽辦?
一種方法是手動為向量中的每個位置提供一個值。 STL中提供的其他方法(標準模板庫)是fill和fill_n。

  • fill()
    “填充”函數將值“ val”分配給[begin,end)範圍內的所有元素,其中“ begin”是初始位置,“ end”是最後位置。

    注意:請注意,範圍中包括“開始”,但不包括“結束”。以下是演示“填充”的示例:

    // C++ program to demonstrate working of fill() 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    int main () 
    { 
      vector<int> 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<vect.size(); i++) 
        cout << vect[i] << " "; 
      
      return 0; 
    }

    輸出:

    0 0 4 4 4 4 4 0
    
  • fill_n()
    在fill_n()中,我們指定起始位置,要填充的元素數和要填充的值。以下代碼演示了fill_n的用法。
    // C++ program to demonstrate working of fil_n() 
    #include <bits/stdc++.h> 
    using namespace std; 
      
    int main() 
    { 
        vector<int> vect(8);   
      
        // calling fill to initialize first four values 
        // to 7 
        fill_n(vect.begin(), 4, 7); 
      
        for (int i=0; i<vect.size(); i++) 
            cout << ' ' << vect[i]; 
        cout << '\n'; 
      
        // calling fill to initialize 3 elements from  
        // "begin()+3" with value 4 
        fill_n(vect.begin() + 3, 3, 4); 
      
        for (int i=0; i<vect.size(); i++) 
            cout << ' ' << vect[i]; 
        cout << '\n'; 
      
        return 0; 
    }

    輸出:

     7 7 7 7 0 0 0 0
     7 7 7 4 4 4 0 0
    



相關用法


注:本文由純淨天空篩選整理自 fill() and fill_n() functions in C++ STL。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。