这个问题在这里已有答案:
我想删除存储在vector <-string>中的重叠字符串,仅显示一个元素。 我排序矢量字典顺序,它运作良好。 然后擦除,我使用下面的代码。
for(auto iter = begin(vec); iter != end(vec); iter++) {
auto frontIter = (iter + 1);
if((*iter).compare(*frontIter) == 0)
vec.erase(iter);
}
但它只擦除一个重叠元素。
如果我输入像a a(3个字符串)并且vector的所有元素都显示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() );