C++ 使用STL更新给定输入集合的成员集合

C++ 使用STL更新给定输入集合的成员集合,c++,stl,C++,Stl,我有一个类,其中包含对象的成员列表(每个对象都有一个可用于比较的ID)。在一个方法中,我收到一个对象的列表,我想将它与成员之一合并 该方法的伪代码类似于: function updateMemberList(list<Object> paramList) { for(Object o in paramList){ if(memberList contains o) Replace o in memberList else

我有一个
,其中包含对象的成员
列表
(每个对象都有一个可用于比较的ID)。在一个方法中,我收到一个对象的
列表
,我想将它与成员之一合并

该方法的伪代码类似于:

function updateMemberList(list<Object> paramList) {
    for(Object o in paramList){
        if(memberList contains o)
            Replace o in memberList
        else
            Put o in memeberList
    }
}
函数updateMemberList(列表参数列表){
for(参数列表中的对象o){
if(成员列表包含o)
替换成员列表中的o
其他的
在memeberList中输入o
}
}
我在STL文档中搜索了一个(或其组合)方法,该方法不允许我编写此函数,但我没有找到任何东西:合并算法似乎只使用了一个比较器进行排序。我错过了我需要的功能吗?有没有更好的方法来解决这个问题


PS:不幸的是,我不能使用C++11或更高版本。

可能与此类似(未经测试):

typedef std::map IdIterMap;
IdIterMap现有_id;
for(std::list::iterator it=memberList.begin();
it!=memberList.end();++it){
现有的_ID[it->ID()]=it;
}
for(std::list::iterator it=paramList.begin();
it!=paramList.end();++it){
IdIterMap::迭代器映射_it=现有的_ID.find(it->ID());
if(map_it!=现有的_id.end()){
*(映射它->秒)=*它;
}否则{
成员列表。推回(*it);
}
}

这些列表是用ID排序的吗?你需要给出C++代码的更多上下文。例如,
memberList
a排序的
std::vector
?或者一个
std::set
。。。。如何更换?按副本分配?还没有,但我想我可以很容易地对它们进行排序。为什么你不能准确地使用C++11或更高版本?并提供您的
列表的详细信息
typedef std::map<ID_type, std::list<Object>::iterator> IdIterMap;
IdIterMap existing_ids;
for (std::list<Object>::iterator it = memberList.begin();
     it != memberList.end(); ++it) {
  existing_ids[it->ID()] = it;
}
for (std::list<Object>::iterator it = paramList.begin();
     it != paramList.end(); ++it) {
  IdIterMap::iterator map_it = existing_ids.find(it->ID());
  if (map_it != existing_ids.end()) {
    *(map_it->second) = *it;
  } else {
    memberList.push_back(*it);
  }
}