std::repeated
和 std::unique
是 C++ 標準庫中的兩個函數,它們都用于處理序列中的元素。但是,這兩個函數在功能上有一些重要的區別。
std::repeated
:
std::repeated
是一個算法,用于生成一個新的序列,其中包含指定次數的給定值。它接受兩個參數:一個迭代器,表示要插入重復元素的位置;另一個參數是要重復的次數。這個函數不會修改原始序列,而是返回一個新的序列,其中包含重復的元素。例如:
std::vector<int> v = {1, 2, 3};
std::vector<int>::iterator it = v.begin() + 1;
v.insert(it, std::repeated(3, 4));
// 現在,v 是 {1, 4, 4, 4, 2, 3}
std::unique
:
std::unique
是一個算法,用于移除序列中的連續重復元素。它接受兩個迭代器,表示要處理的序列范圍。這個函數會修改原始序列,將不重復的元素移到序列的前面,并返回一個迭代器,指向最后一個不重復元素之后的位置。注意,這個函數不會重新排序序列或刪除任何元素,只是將不重復的元素移到前面。例如:
std::vector<int> v = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4};
std::vector<int>::iterator it = std::unique(v.begin(), v.end());
// 現在,v 是 {1, 2, 3, 4, ?, ?, ?, ?, ?, ?},其中 ? 表示未定義的值
// it 指向第一個未定義值的位置,即 v.begin() + 4
總結:
std::repeated
用于生成一個包含重復元素的新序列,而不修改原始序列。std::unique
用于移除序列中的連續重復元素,并修改原始序列。