我有以下数据结构。
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;
}
}
这是正确的还是错的?