返回键值在MIN和MAX之间的子映射
c++ multimap, return submap where key is between MIN and MAX
使用c++,我有一个multimap。从这个multimap,我想得到一个子映射,其中的键是在一个最小和最大值。
例如:
mmap->insert(1,classInstance);
mmap->insert(2,classInstance);
mmap->insert(3,classInstance);
mmap->insert(4,classInstance);
mmap->insert(2,classInstance2);
mmap->insert(5,classInstance);
mmap->insert(6,classInstance);
submap = mmap->submap(2,5);
result is a submap with
2,classInstance
3,classInstance
4,classInstance
2,classInstance2
5,classInstance
as values
我该如何做到这一点?谢谢!
可以使用类成员函数lower_bound
和upper_bound
下面是一个示范程序
#include <iostream>
#include <map>
struct classInstance {};
int main()
{
std::multimap<int, classInstance> mmap;
mmap.insert( { 1, classInstance() } );
mmap.insert( { 2, classInstance() } );
mmap.insert( { 3, classInstance() } );
mmap.insert( { 4, classInstance() } );
mmap.insert( { 2, classInstance() } );
mmap.insert( { 5, classInstance() } );
mmap.insert( { 6, classInstance() } );
auto first = mmap.lower_bound( 2 );
auto last = mmap.upper_bound( 5 );
while ( first != last ) std::cout << first++->first << std::endl;
}
程序输出为
2
2
3
4
5
while循环可以代替for循环,如
for ( ; first != last; ++first ) std::cout << first->first << std::endl;
相关文章:
- 常量映射和常量元素映射之间的区别
- 如何在没有映射的情况下在枚举和字符串之间进行转换?
- C++11 在列表到映射(或其他容器)之间移动元素
- 在类之间传递映射
- 两个进程之间的共享映射内存在编辑时未更新
- 在 C++ 和 C# 之间共享内存映射文件结构
- 遍历std ::映射,效果少于迭代器之间的比较
- 本机C++类与 WinRT 组件(引用类)之间的自动映射
- 映射::擦除:按键擦除或迭代器擦除之间的区别
- 消除类似映射和类似矢量的容器之间的模板专用化
- 高效实现 64 位和 32 位无符号整数之间的双向映射
- 两个映射之间的分配-移动语义和性能
- 如何计算字符串到int的映射之间的所有排列
- Boost管理的映射文件:在OSX和Linux之间不兼容
- 将 1 到 12 之间的数字映射到月份名称
- 希望有效地克服 Boost.Process 间共享内存中映射中键类型之间的不匹配
- 映射和unorderd_map之间的 C 实现差异
- 计算表示稀疏向量 c++ 的映射之间的距离
- 如果没有for循环,我如何直接找到映射中指向两个不同键的任何两个迭代器之间的元素数量
- 整数集之间的映射