|
|
@ -1,11 +1,11 @@
|
|
|
|
// Copyright (c) 2012 The Bitcoin developers
|
|
|
|
// Copyright (c) 2012-2014 The Bitcoin developers
|
|
|
|
// Distributed under the MIT/X11 software license, see the accompanying
|
|
|
|
// Distributed under the MIT software license, see the accompanying
|
|
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef BITCOIN_LIMITEDMAP_H
|
|
|
|
#ifndef BITCOIN_LIMITEDMAP_H
|
|
|
|
#define BITCOIN_LIMITEDMAP_H
|
|
|
|
#define BITCOIN_LIMITEDMAP_H
|
|
|
|
|
|
|
|
|
|
|
|
#include <assert.h> // TODO: remove
|
|
|
|
#include <assert.h>
|
|
|
|
#include <map>
|
|
|
|
#include <map>
|
|
|
|
|
|
|
|
|
|
|
|
/** STL-like map container that only keeps the N elements with the highest value. */
|
|
|
|
/** STL-like map container that only keeps the N elements with the highest value. */
|
|
|
@ -59,12 +59,11 @@ public:
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Shouldn't ever get here
|
|
|
|
// Shouldn't ever get here
|
|
|
|
assert(0); //TODO remove me
|
|
|
|
assert(0);
|
|
|
|
map.erase(itTarget);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void update(const_iterator itIn, const mapped_type& v)
|
|
|
|
void update(const_iterator itIn, const mapped_type& v)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//TODO: When we switch to C++11, use map.erase(itIn, itIn) to get the non-const iterator
|
|
|
|
// TODO: When we switch to C++11, use map.erase(itIn, itIn) to get the non-const iterator.
|
|
|
|
iterator itTarget = map.find(itIn->first);
|
|
|
|
iterator itTarget = map.find(itIn->first);
|
|
|
|
if (itTarget == map.end())
|
|
|
|
if (itTarget == map.end())
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -77,9 +76,7 @@ public:
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Shouldn't ever get here
|
|
|
|
// Shouldn't ever get here
|
|
|
|
assert(0); //TODO remove me
|
|
|
|
assert(0);
|
|
|
|
itTarget->second = v;
|
|
|
|
|
|
|
|
rmap.insert(make_pair(v, itTarget));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
size_type max_size() const { return nMaxSize; }
|
|
|
|
size_type max_size() const { return nMaxSize; }
|
|
|
|
size_type max_size(size_type s)
|
|
|
|
size_type max_size(size_type s)
|
|
|
|