gpt4 book ai didi

c++ - 使键等于(如果键存在于映射中)或严格小于映射中的给定输入

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

我正在将 numberOfItems 个键作为输入并将它们放在这样的 map 中:

int numberOfItems;
int query;
scanf("%d",&numberOfItems);
int temp;
map<int,int> iimap;
for(int i=0;i<numberOfItems;i++)
{
scanf("%d",&temp);
iimap.insert(make_pair(temp,1));
}
printf("Enter query: ");
scanf("%d",&query);
int VstrictlyLessOrEqual = FstrictlyLessOrEqual(query);

我设置了每个输入的默认键= 1;因此,不存在的键的值为 =0。

6 100 5 4 3 2 1 50

对于此输入(第一个输入 6 是 numberOfItems,最后一个输入 50 是 query)FstrictlyLessOrEqual() 应该返回值 5

最佳答案

您想使用std::mapupper_bound()lower_bound()方法:

上限()

upper_bound() 将迭代器返回到比所搜索的键更高的第一个键。所以:

  1. 调用upper_bound()

  2. 如果 upper_bound() 返回 begin() 这意味着搜索的是低于 map 中最低的键。

    <
  3. 否则递减迭代器。它现在将指向一个等于搜索的键或下一个更小的键的键。

下限()

lower_bound() 将迭代器返回到映射中等于或大于所搜索键的第一个键,因此要实现您的目标,您需要:

  1. 调用lower_bound()

  2. 检查 lower_bound() 是否没有返回 end(),并且迭代器的键是否与您搜索的键相同。键存在于映射中。

  3. 否则,检查 lower_bound() 是否返回了 map 的 begin() 迭代器值。如果是,这意味着您搜索的键低于映射中的第一个键,因此存在该值。

  4. 否则,递减返回的迭代器。您搜索的键在映射中不存在,递减后的迭代器指向映射中下一个最小的键。

关于c++ - 使键等于(如果键存在于映射中)或严格小于映射中的给定输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455319/

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