gpt4 book ai didi

c++ std::map获取最高键低于X的元素?

转载 作者:太空狗 更新时间:2023-10-29 19:57:07 24 4
gpt4 key购买 nike

给定一个键为整数的 C++ 映射(或多重映射),是否可以使用 STL 请求其键为低于给定数字的最大数字的元素范围?

如果我有:

map = {{1,'x'}, {2, 'g'}, {3, 'n'}, {3, 'm'}, {4, 'z'}, {5, 'a'}}

我想找到 4 之前的元素,它会返回:

{{3, 'n'}, {3, 'm'}}

(我对 std::map 更感兴趣,但也保留了 std::multimap 的一般性问题)。

最佳答案

您可以使用 lower_bound() 找到您想要的元素之后的第一个元素,然后递减迭代器并使用 equal_range() 访问匹配该元素的所有元素一:

代码

#include <iostream>
#include <map>

int main()
{
std::multimap<int, char> const
m{{1,'x'}, {2,'g'}, {3,'n'}, {3,'m'}, {4,'z'}, {5 'a'}};

auto i = m.lower_bound(4);
if (i == m.begin()) {
std::cerr << "No elements less than 4 were found\n";
} else {
--i;
auto const range = m.equal_range(i->first);
for (auto j = range.first; j != range.second; ++j)
std::cout << j->first << ", " << j->second << '\n';
}
}

输出

3, n
3, m

关于c++ std::map获取最高键低于X的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41169003/

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