gpt4 book ai didi

c++ - 查找 vector 中是否存在相同结构的最快方法

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:45 26 4
gpt4 key购买 nike

假设我有一个 persons 结构体:

struct Person {
char name[100];
char surname[100];
unsigned int age;
};

我想找出最快的方法来搜索并查找 vector 中是否已存在另一个具有相同值(相同名称、相同姓氏、相同年龄)的结构。

请记住,我在一个 vector 中有数百万个。

谢谢

最佳答案

这里有一个可能性:

#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <tuple>

struct Person {
std::string name;
std::string surname;
unsigned int age;

bool operator<(const Person &x) const
{
return std::tie(name, surname, age) < std::tie(x.name, x.surname, x.age);
}
};


int main()
{
std::vector<Person> v;

// ...

std::set<Person> s;
for (const auto &x : v)
{
auto i = s.insert(x);
if (!i.second)
{
// x is duplicated
}
}
}

对于您的评论,您可以通过这种方式对 vector 进行排序:

std::sort(v.begin(), v.end()); // Operator < is overloaded

关于c++ - 查找 vector 中是否存在相同结构的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15443205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com