C++STL中sort(),unique(),unique_copy()的使用

unique()函数作用:剔除相邻元素。剔除原理:看当前字符与他前一个字符是否相同,如果相同就剔除当前字符,如果不同就跳转到下一个字符

unqiue_copy()函数作用:剔除相邻元素,并复制到他处。

//1.直接输出
string str = "acttacct";
vector vecch(str.begin(), str.end()); //根据迭代器的起始位置和终止位置来定初始化一个容器
vector::iterator it = vecch.begin();
for (; it != vecch.end(); ++it)
{
  cout << *it;
}
  cout << endl;

//输出:
//acttacct
//2.剔除相邻重复元素,但字符串长度不变,删除的元素会在填充不确定字符
string str = "acttacct";
unique(str.begin(), str.end());
cout << "str=" << str<
//3.将字符串排序后再删除
string str = "acttacct";
sort(str.begin(), str.end());
str.erase(unique(str.begin(), str.end()), str.end());//str.end()返回的迭代器指向第二个X位置的后面一个位置,调用str.erase()后就把后两个不确定的字符XX删除掉
cout << "str=" << str << endl;

//输出:
//str=act
//4.将获取的字符存储在一个额外的变量中
string str = "acttacct";
string str1;
str1.resize(str.size());
sort(str.begin(), str.end());
str1.resize(unique_copy(str.begin(), str.end(), str1.begin()) - str1.begin());
cout << "str1=" << str1 << endl;

//输出:
//str1=act
//5.返回去重后的数组长度
int num[10] = { 1, 2, 2, 2, 2, 3, 4, 4, 5, 5 };
int ans = unique(num, num + 10) - num;//unique返回指向索引为5的元素,num指向索引为0的元素
cout << "ans= " << ans << endl;
cout << "num[10]="<

 

 

 

你可能感兴趣的:(C++STL中sort(),unique(),unique_copy()的使用)