C++学习随笔2

STL函数篇:

        unique() 函数

                功能:将重复元素折叠缩编,使其成为唯一元素。

                过程:将元素与相邻的元素比较,相同则只选其中一个,去重后将原集合覆盖,后方未           处理元素不会受到影响。相当于开了一个新数组,将区间内的元素去重后放入新数组,然后           将原数组相同位置用新数组替换。

                unique函数返回值为去重后数组最后一位的地址

unique()函数的返回值是源字符串中去除相邻之间相同字符后剩下的字符串中的最后一个字符的下一个位置,举例说明:"acttacct"有8个字符,相邻之间重复的有两个,"acttacct"被unique()后的字符串面貌是"actactXX",X代表的是不确定的字符。unique函数的返回值是一个迭代器类型,指向的是第一个X所处的位置。STL中的参数区间都是左闭右开的,str.end()返回的迭代器指向第二个X位置的后面一个位置,所以调用str.erase()后就把后两个不确定的字符XX删除掉了。最后得到的就是我们最开始想要的结果了"actact"。https://blog.csdn.net/lioncatch/article/details/80989783

                 想要求出去重后数组的长度,只需要  unique( str, str+len) - str  即可(不是从str [0] 开              始则需要特殊判断)。

eg:

    int a[20]={1,0,1,1,1,2,9,7,6,5,6,3,4,5,2,2,1,0,6,9};
	
	cout<<unique(a+10,a+20)-a<<' '<<a<<endl;
	for(int i=0;i<20;i++)	cout<<a[i]<<' ';

注意:

        unique函数只能去除相邻的重复元素,比如10029001111去重后为10290101111,并不是去重所有相同元素,且数组长度不会改变。

        unique函数除了数组之外还可以处理字符串(字符数组)。

        unique函数使用时需要<algorithm>头文件。

猜你喜欢

转载自blog.csdn.net/Dueve_scenputer/article/details/121385334
今日推荐