gpt4 book ai didi

c++ - 如何使用映射C++中的值获取匹配键

转载 作者:可可西里 更新时间:2023-11-01 18:16:18 26 4
gpt4 key购买 nike

我有一个以结构作为值类型的映射

map<int id, struct_t*> table

struct_t
{
int prev;
int wt;
string name;
}

只使用prev,需要找到对应的id。提前致谢!

编辑:

int key=0;
for(auto it = table.begin(); it != table.end(); ++it)
{
if(table[(*it).first].prev == ?)
}

这是我的 map 数据的样子:

id    prev abundance  thing
1573 -1 0 book
1864 1573 39 beds
2075 1864 41 tray
1760 2075 46 cups

对于每个 id,我需要找到下一个匹配的 id。因此,对于 prev 列中的 1573,我需要找到一个匹配的“id”,即 1864。此外,std::next 不起作用,因为数据集不一定在下一个元素中具有匹配的 id。希望这有帮助!

请帮帮我!!!我的老板已经对我花这么多时间学习 C++ 感到失望了(已经 3 周了!)

最佳答案

如果您有现代编译器(支持 lambda),您可以执行以下操作:

const int prevToFind = 10;
auto findResult = std::find_if(std::begin(table), std::end(table), [&](const std::pair<int, struct_t*> &pair)
{
return pair.second->prev == prevToFind;
});

int foundKey = 0; // You might want to initialise this to a value you know is invalid in your map
struct_t *foundValue = nullptr
if (findResult != std::end(table))
{
foundKey = findResult->first;
foundValue = findResult->second;

// Now do something with the key or value!
}

如果您有较旧的编译器,请告诉我,我可以更新示例以改为使用谓词类。

关于c++ - 如何使用映射C++中的值获取匹配键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12742472/

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