#include <iostream> #include <map> class interval_map { friend void IntervalMapTest(); V m_valBegin; typedef std::map<K,V> m_map; public: // constructor associates whole range of K with val interval_map(V const& val) : m_valBegin(val) {} // Assign value val to interval [keyBegin, keyEnd). // Overwrite previous values in this interval. // Conforming to the C++ Standard Library conventions, the interval // includes keyBegin, but excludes keyEnd. // If !( keyBegin < keyEnd ), this designates an empty interval, // and assign must do nothing. void assign( K const& keyBegin, K const& keyEnd, V const& val ) { for( auto it = m_map.find( keyBegin ); * it != keyEnd; ++it ) { * it = val; } } // look-up of the value associated with key V const& operator[]( K const& key ) const { auto it=m_map.upper_bound(key); if(it==m_map.begin()) { return m_valBegin; } else { return (--it)->second; } } };
m_map
map::begin
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)