返回键值在MIN和MAX之间的子映射

c++ multimap, return submap where key is between MIN and MAX

本文关键字:之间 映射 MAX 键值 MIN 返回      更新时间:2023-10-16

使用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_boundupper_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;