gpt4 book ai didi

c++ - 检查 map 中的 'deepest' 元素

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

我有一个 map<int, map<int, int>> .

第一个键代表节点,第二个键代表一个属性,'最深'元素代表一个特定的值。

我需要检查该元素,但执行以下不必要的操作会向我的 map 添加键:

map<int, map<int, int>> test;
if (test[4][3] > 5)
{
//do something
}

我想到的替代方案是

map<int, map<int, int>> test;
if (test.find(4) != test.end())
{
if (test[4].find(3) != test[4].end())
{
if (test[4][3] > 5)
{
//do something
}
}
}

有更好的方法吗?我不知道是否存在 key [4][3]在 map 中,我不想不必要地添加它。谢谢!

最佳答案

这应该有效——首先你在第一个 map 中搜索并保存返回的迭代器,然后如果该迭代器有效你搜索他指向的 map 并将结果保存在另一个迭代器中,如果他有效则意味着你寻找的对象存在,你只需检查它的值:

map<int, map<int, int>> test;
map<int, map<int, int>>::iterator it1;
map<int, int>::iterator it2;
if ((it1 = test.find(4)) != test.end())
{
if ((it2 = it1->second.find(3)) != it1->second.end())
{
if (it2->second > 5)
{
//do something
}
}
}
return 0;

关于c++ - 检查 map 中的 'deepest' 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17208458/

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