STL mapの効率的な挿入と更新
#include
#include
#include
#include
#include
#include
#include
using namespace std;
template<typename MapType, // map
typename KeyArgType, // KeyArgType ValueArgtype
typename ValueArgtype> //
//
typename MapType::iterator
efficientAddOrUpdate(MapType& m,
const KeyArgType& k,
const ValueArgtype& v)
{
typename MapType::iterator Ib = // k ;
m.lower_bound(k); //
// “typename”
// 7
if(Ib != m.end() && // Ib pair
!(m.key_comp()(k, Ib->first))) { // k...
Ib->second = v; // pair
return Ib; // pair
} //
else{
typedef typename MapType::value_type MVT;
return m.insert(Ib, MVT(k, v)); // pair(k, v) m
} // map
} //
int main()
{
map<int,int> m;
m[0]=0;
m[1]=1;
m[2]=2;
m[4]=4;
efficientAddOrUpdate(m,4,3);
efficientAddOrUpdate(m,3,3);
cout<3]<cout<4]<return 0;
}