0

有谁知道如何创建两个多图关联容器。第一个将有重复的键。然后我想发布算法来搜索所有重复项并将它们移动到第二个容器中,并可能删除第一个容器中的原始重复项。

IE :

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);

任何帮助将非常感激。

4

2 回答 2

0

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

于 2012-08-14T01:07:35.017 回答
0

我建议您遍历第一个多图,寻找重复项。找到它们后,将它们移动到第二个多图。

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;
    }
于 2012-08-14T02:00:06.917 回答