溫馨提示×

C++ repeated與unique的區(qū)別

c++
小樊
88
2024-09-14 09:40:56
欄目: 編程語言

std::repeatedstd::unique 是 C++ 標準庫中的兩個函數(shù),它們都用于處理序列中的元素。但是,這兩個函數(shù)在功能上有一些重要的區(qū)別。

  1. std::repeatedstd::repeated 是一個算法,用于生成一個新的序列,其中包含指定次數(shù)的給定值。它接受兩個參數(shù):一個迭代器,表示要插入重復(fù)元素的位置;另一個參數(shù)是要重復(fù)的次數(shù)。這個函數(shù)不會修改原始序列,而是返回一個新的序列,其中包含重復(fù)的元素。

例如:

std::vector<int> v = {1, 2, 3};
std::vector<int>::iterator it = v.begin() + 1;
v.insert(it, std::repeated(3, 4));
// 現(xiàn)在,v 是 {1, 4, 4, 4, 2, 3}
  1. std::uniquestd::unique 是一個算法,用于移除序列中的連續(xù)重復(fù)元素。它接受兩個迭代器,表示要處理的序列范圍。這個函數(shù)會修改原始序列,將不重復(fù)的元素移到序列的前面,并返回一個迭代器,指向最后一個不重復(fù)元素之后的位置。注意,這個函數(shù)不會重新排序序列或刪除任何元素,只是將不重復(fù)的元素移到前面。

例如:

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());
// 現(xiàn)在,v 是 {1, 2, 3, 4, ?, ?, ?, ?, ?, ?},其中 ? 表示未定義的值
// it 指向第一個未定義值的位置,即 v.begin() + 4

總結(jié):

  • std::repeated 用于生成一個包含重復(fù)元素的新序列,而不修改原始序列。
  • std::unique 用于移除序列中的連續(xù)重復(fù)元素,并修改原始序列。

0