gpt4 book ai didi

c++ - 在 C++ 中删除结构 vector 中的重复值

转载 作者:行者123 更新时间:2023-11-30 01:18:02 24 4
gpt4 key购买 nike

我有一个 C++ 结构 vector 。该结构包含一个 int 和两个字符串变量。我想删除 vector 中的重复值。我尝试使用 STD::UNIQUE 但我知道这不是正确的方法。请帮助我解决问题的有效方法。提前致谢。

最佳答案

您可以分两步完成此操作:

1) 使用 std::sort 对 vector 进行排序使用合适的二元谓词。谓词通过实现 strict weak ordering 来设置排序标准。 .

2) 在std::unique 中使用类似于erase-remove 习语的东西| . std::unique 必须使用应用于步骤 1 中排序的相同顺序调用。

例子:

struct Foo 
{
int a;
std::string b, c;
};

// lexicographical comparison provides strict weak ordering
bool cmp(const Foo& lhs, const Foo& rhs)
{
return std::tie(lhs.a, lhs,b, lhs.c) < std::tie(rhs.a, rhs.b, rhs.c);
}

std::vector<Foo> v = ....
std::sort(vec.begin(), vec.end(), cmp);
vec.erase(std::unique(vec.begin(), vec.end(), cmp), vec.end());

关于c++ - 在 C++ 中删除结构 vector 中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23196087/

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