本文整理汇总了C++中set::swap方法的典型用法代码示例。如果您正苦于以下问题:C++ set::swap方法的具体用法?C++ set::swap怎么用?C++ set::swap使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类set
的用法示例。
在下文中一共展示了set::swap方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: lock
void AdInvIdx<KEY>::Filter(const set<KEY> & keys, set<Ice::Long> & gids) {
vector<set<Ice::Long> > g_sets;
IceUtil::RWRecMutex::WLock lock(mutex_);
for (typename set<KEY>::const_iterator kit = keys.begin(); kit != keys.end(); ++kit) {
typename map<KEY, set<Ice::Long> >::iterator mit = map_.find(*keys);
if (mit == map_.end()) {
continue;
} else {
set<Ice::Long> tmp;
set_intersection(mit->second.begin(), mit->second.end(), gids.begin(),
gids.end(), inserter(tmp, tmp.begin()));
g_sets.push_back(tmp);
}
}
if(g_sets.empty()){
gids.clear();
return;
}else if(g_sets.size() == 1){
gids.swap(g_sets.at(0));
return;
}
set<Ice::Long> result;
result.swap(g_sets.at(0));
for(vector<set<Ice::Long> >::iterator vit = ++(g_sets.begin());vit != g_sets.end();++vit){
set<Ice::Long> tmp;
set_union(result.begin(),result.end(),(*vit).begin(),(*vit).end(),inserter(tmp,tmp.begin()));
result.swap(tmp);
}
gids.swap(result);
}
示例2: Filt
//---------------------------------------------------------------------------
void SpecialFilter::Filt(set<int> & targets) {
set<int> tmpset;
IceUtil::Mutex::Lock lock(mutex_);
// set_intersection(targets.begin(),targets.end(), ids_.begin(), ids_.end(),std::inserter(tmpset,tmpset.begin()));
for (set<int>::iterator sit = targets.begin(); sit != targets.end(); ++sit) {
if (ids_.find(*sit) != ids_.end()) {
tmpset.insert(*sit);
}
}
targets.swap(tmpset);
}