有谁知道如何创建两个多图关联容器。第一个会有重复的键。然后我想发布算法来搜索所有重复项并将它们移动到第二个容器,并可能删除第一个容器中的原始副本。
即。 :
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 :(得分:0)
了解multi_map::lower_bound
和multi_map::upper_bound
。它们将为您提供一对迭代器,这些迭代器定义一系列与参数相等的值。如果序列的长度大于1,则表示您有重复项。
答案 1 :(得分: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;
}