void operator()(GNode node, list<GNode>& workList) { Node &nData = graph.getData(node); for (Graph::edge_iterator ei = graph.edge_begin(node),ee=graph.edge_end(node); ei != ee; ei++) { GNode neigh = graph.getEdgeDst(ei); Node &neighData = graph.getData(neigh); if (neighData.component > nData.component) { neighData.component = nData.component; if (schedule == FIFO) { workList.emplace_back(neigh); } else { workList.emplace_front(neigh); } } } }
void set(int key, int value) { auto iter = mm.find(key); if(iter != mm.end()){ iter->second->second = value; ll.splice(ll.begin(), ll, iter->second); // move the record } else { if(mm.size() == cap){ auto back = ll.back(); // NOTICE: back() returns a reference mm.erase(back.first); ll.pop_back(); } ll.emplace_front(key, value); mm[key] = ll.begin(); } }
void set(int key, int value) { auto found_iter = m_map.find(key); if (found_iter != m_map.end()) //key exists { m_list.splice(m_list.begin(), m_list, found_iter->second); //move the node corresponding to key to front found_iter->second->second = value; //update value of the node return; } if (m_map.size() == m_capacity) //reached capacity { int key_to_del = m_list.back().first; m_list.pop_back(); //remove node in list; m_map.erase(key_to_del); //remove key in map } m_list.emplace_front(key, value); //create new node in list m_map[key] = m_list.begin(); //create correspondence between key and node }
void ofxWidget::updateVisibleWidgetsList() { if (!ofxWidget::bVisibleListDirty) return; //ofLogNotice() << "vList Update cache miss"; // build a list of visible widgets based on all widgets // TODO: only rebuild this list if visiblility list on adding/removing and // parenting widgets, and on changing widget visiblity, of course. sVisibleWidgets.clear(); for (auto it = sAllWidgets.crbegin(); it != sAllWidgets.crend(); ++it) { if (auto p = it->lock()) { if (p->mVisible) { sVisibleWidgets.emplace_front(*it); } else { std::advance(it, p->mNumChildren); } } } ofxWidget::bVisibleListDirty = false; }
void set(int key, int value) { // lookup auto found = _lookup.find(key); // found key if (found != _lookup.end()) { // set value found->second->second = value; // move to head _lru.splice(_lru.begin(), _lru, found->second); } // not found else { // insert _lru.emplace_front(key, value); _lookup[key] = _lru.begin(); // remove lru if (_lookup.size() > _capacity) { _lookup.erase(_lru.back().first); _lru.pop_back(); } } }
void LRUCache::append(int key, int value) { lst_.emplace_front(key, value); pair<hash_iterator, bool> ret = hash_map_.insert(hash_value_type(key, lst_.begin())); if (!ret.second) ret.first->second = lst_.begin(); }
void _add(K key, V&& value) { lru.emplace_front(key, std::move(value)); // can't move key because we access it below contents[key] = lru.begin(); trim_cache(); }