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
函數返回一個特殊的對象,該對象表示要重復的值。在這種情況下,我們傳遞了一個參數(即要重復的次數),因為我們希望將元素重復多次。