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

17 Mar 2025 | 阅读 2 分钟

Fill()Fill_n() 是 C++ 标准模板库 (STL) 中用于使用给定值填充容器中一系列元素的两个函数。但是,它们在功能和用法上有所不同。在本文中,我们将讨论 C++ 中 Fill() 和 Fill_n() 方法的区别。但在讨论它们的区别之前,我们必须了解 Fill() 和 Fill_n() 方法。

什么是 std::fill() 方法?

  • std::fill() 用指定值填充范围 [first, last)。
  • 它需要两个迭代器,first 和 last,它们指示需要填充的范围以及将应用于每个元素的值。

语法

它具有以下语法:

示例

让我们举一个例子来说明 C++ 中的 std::fill() 方法。

输出

Difference between fill() and fill_n() functions in C++ STL

什么是 std::fill_n() 方法?

  • std::fill_n() 方法将给定值插入到从迭代器开始的前 count 个元素中。
  • 填充元素需要一个指向起始位置的迭代器、要填充的元素数量 (count) 和一个值。

语法

它具有以下语法:

示例

让我们举一个例子来说明 C++ 中的 std::fill_n() 方法。

输出

Difference between fill() and fill_n() functions in C++ STL

fill() 和 fill_n() 方法的主要区别

Difference between fill() and fill_n() functions in C++ STL

fill() 和 fill_n() 方法之间有几个区别。这些方法之间的一些主要区别如下:

序号fill()fill_n()
1.它将给定值设置为每个数组元素。它用于为从特定元素开始的范围中预定数量的元素赋予新值。
2.其语法是 -
void fill(ForwardIterator first, ForwardIterator last, const value_type &val);
其语法是 -
在 C++ 98 中
void fill_n (OutputIterator first, Size n, const T& val);
从 C++11 开始
OutputIterator fill_n (OutputIterator first, Size n, const T& val);
3.它不返回值。它返回一个指向最后一个要填充的元素之后(在 C++ 11 中)的迭代器。
(在 C++ 98 中)返回空。
4.它的时间复杂度是 O(N)。它的时间复杂度是 O(N)。