c++ multimap,return 子图,其中键在 MIN 和 MAX 之间

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

使用 C++,我有一个多图。 从这个 multimap 我想得到一个子图,其中的键带有 MIN 和 MAX 值。

类似的东西:

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

我怎样才能做到这一点? 谢谢!

您可以使用 class 成员函数 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;