溫馨提示×

C++ repeated與unique的區別

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

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

  1. std::repeatedstd::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}
  1. std::uniquestd::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 用于移除序列中的連續重復元素,并修改原始序列。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女