将迭代器(一组映射)映射到整数上的集合

时间:2017-12-03 21:48:33

标签: c++ dictionary iterator std stdmap

我有以下数据结构。

std::set< std::map<ScanSegment*, bool> > lockRules;

我想将此结构中的每个条目映射到一组用户(由一组整数表示。所以我创建了以下地图

std::map<std::set<std::map<ScanSegment*,bool> >::iterator, std::set<int> > lockRuleUsersMap;

这样我就可以直接将lockRules中每个条目的索引迭代器映射到一组用户。 到目前为止,代码编译。但是,只要我尝试用值填充地图,我就会很长时间编译错误。

set<int> users;
for(int i = 1; i < numUsers; ++i){
    users.insert(i);
}
for(set<map<ScanSegment*, bool> >::iterator it = lockRules.begin(); it != lockRules.end(); ++it){

    lockRuleUsersMap[it] = users;
    //Compile error here
    lockRuleUsersMap.insert(make_pair(it,users));
    //also compile error.
}

我做错了什么?

此外,我想以下列方式阅读此地图

for(set<map<ScanSegment*,bool> >::iterator xx = lockRules.begin(); xx != lockRules.end(); ++xx){
    map<ScanSegment*,bool> ru = (*xx);
    set<int> users;
    //users = lockRuleUsersMap.at(xx);
    map<set<map<ScanSegment*,bool> >::iterator, set<int> >::iterator lkItr;
    lkItr = lockRuleUsersMap.find(xx);
    if(lkItr != lockRuleUsersMap.end()){
        users = (lkItr)->second;
    }else{
        WRN << "Couldn't find lock rule in the lockRuleUsersMap" << endl;
    }
}

这是正确的还是错的?

0 个答案:

没有答案