注册 登录
编程论坛 C++教室

关于unique算法

未未来 发布于 2013-09-24 14:00, 497 次点击
程序代码:
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;


int main()
{  string st("boohiss");
string::iterator it=   unique(st.begin(),st.end());

cout<<st;

return 0;
}

为什么boohiss调用unique之后变成了bohisss
不应该是 bohisso .返回的迭代器指向第二个s
7 回复
#2
peach54602013-09-24 16:58
只是去重复,可没说移动哈...
primer有很详细的注解...

你不是看过两三次primer了么?
#3
未未来2013-09-25 00:47
回复 2楼 peach5460
这是看第二遍发现的,,,貌似没看明白,,似懂非懂的,
#4
peach54602013-09-25 07:13
只有本站会员才能查看附件,请 登录

1,只是删除相邻的重复元素
2,只是把不重复的元素位置前移替换重复元素,可没说是将不重复元素和重复元素互换位置
#5
未未来2013-09-25 18:38
回复 4楼 peach5460
这个我知道,但是我在逐条看附录STL的算法的时候看到unique算法看到他讲到了排序之后,返回迭代器后面的序列,多读了几遍,它貌似是不指定的,随机的,。
#6
peach54602013-09-25 19:58
不知道你所谓的不指定和随机是什么意思...
#7
未未来2013-09-25 20:51
回复 5楼 未未来
boohiss 经过调用unique之后 前面序列bohis 是不重复的,但是原string的长度不变,后面还有两个位置上的字符是随机的,应该是这个意思,
#8
peach54602013-09-26 08:47
你再仔细去看看算法吧...
我框得很清楚了,我觉得...
1