5 #ifndef BITCOIN_MRUSET_H
6 #define BITCOIN_MRUSET_H
18 typedef typename std::set<T>::iterator
iterator;
28 mruset(size_type nMaxSizeIn = 0) { nMaxSize = nMaxSizeIn; }
29 iterator
begin()
const {
return set.begin(); }
30 iterator
end()
const {
return set.end(); }
31 size_type
size()
const {
return set.size(); }
32 bool empty()
const {
return set.empty(); }
33 iterator
find(
const key_type& k)
const {
return set.find(k); }
34 size_type
count(
const key_type& k)
const {
return set.count(k); }
35 void clear() { set.clear(); queue.clear(); }
38 bool inline friend operator<(const mruset<T>& a,
const mruset<T>& b) {
return a.
set < b.set; }
39 std::pair<iterator, bool>
insert(
const key_type& x)
41 std::pair<iterator, bool> ret = set.insert(x);
44 if (nMaxSize && queue.size() ==
nMaxSize)
46 set.erase(queue.front());
57 while (queue.size() > s)
59 set.erase(queue.front());
std::set< T >::iterator iterator
std::pair< iterator, bool > insert(const key_type &x)
iterator find(const key_type &k) const
size_type max_size() const
STL-like set container that only keeps the most recent N elements.
size_type count(const key_type &k) const
bool friend operator==(const mruset< T > &a, const std::set< T > &b)
size_type max_size(size_type s)
std::set< T >::const_iterator const_iterator
bool friend operator==(const mruset< T > &a, const mruset< T > &b)
mruset(size_type nMaxSizeIn=0)
std::set< T >::size_type size_type