c++ - 从 vector 中删除重复元素

标签 c++ duplicates

我在 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/

相关文章:

python - 删除这些元组列表中重复的列表组合的元组

php - 在文档管理应用程序中检查文档重复项和类似文档

c++ - 一些缺少的头文件,如 import/cli.h 、 io/FileOutputStream.h 或 gpu/StreamManager.h

C++ 字符串操作给我奇怪/不一致/错误的结果

c++ - 如何在 OS X 上安装 C++ 库 libuv?

mysql - 在 MYSQL 表中查找重复项,其中数据位于 "title"-> "value"列以及其他相关表中的其他数据

C++Builder XE10.2 [ilink32 错误] 致命 : Exceeded memory limit for block Line number cache in module <somethingsomething. cpp>

c++ - 多线程基准

python - 根据元组中的索引删除重复的元组值

python - 删除/删除重复项,除非行包含特定字符串