我在 C++ 中创建了一个包含多个元素的 vector ,我想删除 vector 中具有相同值的元素。基本上,我想删除找到重复元素的 vector 的整个索引。我的载体叫做人。我正在尝试做类似的事情:
for(int i=0; i < person.size(); i++){
if(i>0 && person.at(i) == person.at(0:i-1)) { // matlab operator
continue;
}
writeToFile( perason.at(i) );
}
如何创建运算符 0:i-1 来检查所有可能的索引组合?
编辑:我正在尝试 GarMan 解决方案,但我遇到了每个问题:
set<string> myset;
vector<string> outputvector;
for (string element:person)
{
if (myset.find(element) != myset.end())
{
myset.insert(element);
outputvector.emplace_back(element);
}
}
最佳答案
这是一个“就地”版本(不需要第二个 vector ),应该可以与旧的编译器一起使用:
std::set<std::string> seen_so_far;
for (std::vector<std::string>::iterator it = person.begin(); it != person.end();)
{
bool was_inserted = seen_so_far.insert(*it).second;
if (was_inserted)
{
++it;
}
else
{
swap(*it, person.back());
person.pop_back();
}
}
让我知道这是否适合您。请注意,不能保证元素的顺序保持不变。
关于c++ - 从 vector 中删除重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21375896/