2012-08-14 70 views
0

有谁知道如何创建两个multimap关联容器。第一个会有重复的密钥。然后我想发布算法来搜索所有重复项,并将它们移到第二个容器中,也许删除第一个容器中的原始重复项。STL multimap关联容器

即:

typedef multimap< int, int, less<int> > mma; 
mma contain1; 

typedef multimap< int, less<int> > ne; 
ne contain2; 

cointain1.insert(mma::value_tpe(5, 2); 
cointain1.insert(mma::value_tpe(5, 3); 
cointain1.insert(mma::value_tpe(5, 3); 
cointain1.insert(mma::value_tpe(6, 2); 

任何帮助,将不胜感激。

回答

0

阅读关于multi_map::lower_boundmulti_map::upper_bound。他们会给你一对迭代器,它们定义了一系列等于参数的值。如果序列的长度大于1,则表示重复。

+0

谢谢一堆。我对此做了一些研究。 – tensuka 2012-08-14 01:11:02

0

我建议你迭代第一个multimap,寻找重复。当你找到它们时,你将它们移动到第二个multimap。

typedef multimap<int, int> mma; 
mma contain1; 
mma contain2; 

contain1.insert(mma::value_type(5, 2); 
contain1.insert(mma::value_type(5, 3); 
contain1.insert(mma::value_type(5, 3); 
contain1.insert(mma::value_type(6, 2); 

int previous; 

for (mma::iterator i = contain1.begin(); i != contain1.end();) 
    if (i != contain1.begin() && i->first == previous) 
    { 
     contain2[i->first] = i->second; 

     // "maybe delete the original duplicates in the first container"... 
     contain1.erase(i++); 
    } 
    else 
    { 
     previous = i->first; 
     ++i; 
    }