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_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++,我有一个多图。 从这个 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_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;