gpt4 book ai didi

c++ - 任何方式来比较C++中数据结构中的多种方式

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

例如我有结构

struct A {
std::string Id;
std::string Name;
Std::string Year;
};

I defined data type look like
std::map<A, int> MyMap;

我将一些项目放入 MyMap。我想找到满足以下其中一项的项目

- MyMap.find(it1); //that return iter if match Id
- MyMap.find(it2); //that return iter if match both Id and Name
- MyMap.find(it3); //that return iter if match all Id, Name,Year

我知道我必须在结构 A 中定义 operator< 但如何定义它适用于上述 3 种情况。或者哪种数据类型而不是 Map 适合这种情况。

最佳答案

std::map 只能有一个谓词将键与值相关联。

您可以通过标准算法 std::find_if 使用不同的谓词来实现这一点,但它进行的是线性搜索,而不是高效的 map 查找。

如果您需要多个谓词来高效地查找一个元素,那么您需要一个多索引容器。标准库没有这样的东西,但你可以通过在内部使用多个映射来实现一个,或者你可以使用来自 Boost 的通用解决方案。 .

关于c++ - 任何方式来比较C++中数据结构中的多种方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710305/

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