使用迭代器 C++ 删除矢量中的重叠字符串

remove overlaps string in vector with iterator c++

本文关键字:重叠 字符串 迭代器 C++ 删除      更新时间:2023-10-16

我想删除存储在vector<-string>中的重叠字符串,只显示一个元素。
我对矢量字典顺序进行了排序,效果很好。
接下来对于擦除,我使用下面的代码。

for(auto iter = begin(vec); iter != end(vec); iter++) {
auto frontIter = (iter + 1);
if((*iter).compare(*frontIter) == 0) 
vec.erase(iter);
}

但它只擦除一个重叠元素。
如果我像 a(3 个字符串(一样输入并且矢量的所有元素都显示 a(2 个字符串(
我认为vec.erase(iter);部分有问题..

vector的元素放在一个set中,然后放回vector将删除所有重复项。

set<string> s( vec.begin(), vec.end() );
vec.assign( s.begin(), s.end() );

如果有必要与迭代器有关

set<string> s;
for(auto iter = begin(vec); iter != end(vec); iter++)
{
s.insert(*iter);
}
vec.assign( s.begin(), s.end() );