21xrx.com
2024-12-27 14:13:41 Friday
登录
文章检索 我的文章 写文章
"C++中的unique函数"
2023-07-08 19:39:20 深夜i     --     --
unique函数 C++ 去重 元素 相邻

C++是一门强大的编程语言,其应用广泛,在各个领域都有着重要的地位。而在这门语言中,unique函数则是一个非常有用的函数,其可以帮助开发者快速、简单地去除容器中的重复元素,从而方便进行后续的操作。

unique函数的基本用法非常简单,只需要将待操作的容器的起始和结束迭代器作为参数传入即可。例如以下代码:


#include <vector>

#include <algorithm>

#include <iostream>

int main()

{

  std::vector<int> nums 3;

  std::vector<int>::iterator last = std::unique(nums.begin(), nums.end());

  nums.erase(last, nums.end());

  std::cout << "Unique elements:\n";

  for (int i : nums)

    std::cout << i << ' ';

  

  std::cout << std::endl;

}

输出结果为:


Unique elements:

1 2 3 4 5

可以看出,unique函数已经帮助我们将重复元素去除了,并且还返回了最后一个有效元素之后的迭代器,我们可以利用这个迭代器将重复元素从容器中删除掉。

需要注意的是,unique函数并不能保证容器中元素的顺序不变。如果想保留原有顺序,还需要结合sort函数使用。例如:


#include <vector>

#include <algorithm>

#include <iostream>

int main()

{

  std::vector<int> nums 2;

  std::sort(nums.begin(), nums.end());

  auto last = std::unique(nums.begin(), nums.end());

  nums.erase(last, nums.end());

  std::cout << "Unique elements:\n";

  for (int i : nums)

    std::cout << i << ' ';

  

  std::cout << std::endl;

}

输出结果为:


Unique elements:

1 2 3 4 5

除了基本用法,unique函数还有几个可选参数,其中一个是二元谓词,可以自定义比较器。例如,我们可以定义一个比较函数,让unique函数按照一定规则去除重复元素:


#include <vector>

#include <algorithm>

#include <iostream>

bool my_compare(int x, int y)

  return x % 3 == y % 3;

int main()

{

  std::vector<int> nums1;

  std::sort(nums.begin(), nums.end());

  auto last = std::unique(nums.begin(), nums.end(), my_compare);

  nums.erase(last, nums.end());

  std::cout << "Unique elements:\n";

  for (int i : nums)

    std::cout << i << ' ';

  

  std::cout << std::endl;

}

输出结果为:


Unique elements:

1 4 5

可以看出,我们定义的比较函数只要满足相等的元素返回true,unique函数就会按照这个规则去除重复元素。

综上所述,unique函数是一个非常实用的函数,可以在容器去重的场景中帮助我们快速、简单地处理重复元素,从而提高开发效率。我们需要熟练掌握其基本用法和几个可选参数,并在实际开发中灵活使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复