C++ 使用STL从字符串中删除重复字符

C++ 使用STL从字符串中删除重复字符,c++,string,C++,String,有没有一种方法可以从字符串中删除重复字符,就像可以从向量中删除重复字符一样,如下所示 sort( vec.begin(), vec.end() ); vec.erase( unique( vec.begin(), vec.end() ), vec.end() ); 还是我只需要为它编写一个基本的解决方案? 我的想法是: 我可以把所有的字符添加到一个集合中,c++算法和容器设计的全部要点是,算法尽可能是容器不可知的。 所以同样适用于向量的算法也适用——当然在弦上 std::sort(str.be

有没有一种方法可以从字符串中删除重复字符,就像可以从向量中删除重复字符一样,如下所示

sort( vec.begin(), vec.end() );
vec.erase( unique( vec.begin(), vec.end() ), vec.end() );
还是我只需要为它编写一个基本的解决方案? 我的想法是:


我可以把所有的字符添加到一个集合

中,c++算法和容器设计的全部要点是,算法尽可能是容器不可知的。 所以同样适用于向量的算法也适用——当然在弦上

std::sort(str.begin(), str.end());
str.erase(std::unique(str.begin(), str.end()), str.end());

同样的方法甚至适用于老式的C字符串–有一点小的区别,即不能
擦除它们的尾部,您需要通过重新设置空终止字符来手动截断它们(并且没有
开始
结束
成员函数,因此您可以使用指向第一个和最后一个字符的指针).

字符串和向量的含义完全相同。这取决于“重复”字符的含义。字符串
“ABACADAF”
是否有重复的
a
s?或者你只想
“AABACAD”
删除双
AA
中的第一个
A
?为什么你会选择
O(n log(n))
解决方案,而你可以在
O(n)
中执行第二种方法中解释的操作?多亏了我在str.erase(…)中遗漏了“str”部分结果是错误地认为这是不可能的。。我的错。。