0

2 つのマルチマップ連想コンテナーを作成する方法を知っている人はいますか? 最初のものには重複したキーがあります。次に、すべての重複を検索し、それらを 2 番目のコンテナーに移動して、最初のコンテナー内の元の重複を削除するアルゴリズムを投稿したいと思います。

すなわち:

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_boundでくださいmulti_map::upper_bound。それらは、引数に等しい値のシーケンスを定義するイテレータのペアを提供します。シーケンスの長さが1より大きい場合は、重複しています。

于 2012-08-14T01:07:35.017 に答える
0

重複を探して、最初のマルチマップを反復処理することをお勧めします。それらを見つけたら、2 番目のマルチマップに移動します。

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 に答える