向量一经声明,其所有值均初始化为零。下面是一个示例代码来演示相同的。
// 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。