std::repeated
是一个 C++ 标准库算法,用于在给定范围内重复某个元素。这个算法通常与其他算法(如 std::replace
、std::fill
等)结合使用,以实现更复杂的操作。
下面是一个简单的示例,展示了如何使用 std::repeated
和 std::replace
来替换容器中的所有元素:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
// 使用 std::repeated 和 std::replace 将所有元素替换为 0
std::replace(v.begin(), v.end(), std::repeated(1), 0);
// 输出结果
for (int i : v) {
std::cout<< i << " ";
}
return 0;
}
在这个示例中,我们首先创建了一个包含整数的 std::vector
。然后,我们使用 std::replace
算法将所有元素替换为 0。std::repeated
函数返回一个特殊的对象,该对象表示要重复的值。在这种情况下,我们只需要传递一个参数(即要重复的次数),因为我们希望将所有元素替换为相同的值。
请注意,std::repeated
并不直接修改容器。相反,它返回一个表示要重复的值的对象,该对象可以与其他算法(如 std::replace
)一起使用。
如果你想要在容器中重复某个元素,你可以使用 std::fill
或 std::generate
算法。例如,以下代码将向容器添加一个重复的元素:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
// 在容器末尾添加一个重复的元素
v.push_back(6);
// 使用 std::fill 将最后一个元素重复 3 次
std::fill(v.end() - 1, v.end() + 2, std::repeated(3));
// 输出结果
for (int i : v) {
std::cout<< i << " ";
}
return 0;
}
在这个示例中,我们首先向容器添加一个新元素,然后使用 std::fill
算法将其重复 3 次。请注意,std::repeated
函数返回一个特殊的对象,该对象表示要重复的值。在这种情况下,我们传递了一个参数(即要重复的次数),因为我们希望将元素重复多次。