错误是由于比较了std::pair和由V表示的模板变量,在本例中为char。为了避免这种情况,可以使用coust谓词,如下所示。
template<class K, class V>
class intervalMap{
public:
intervalMap(V val)
{
v = val;
}
public:
void assign(K const a, const K b, const V c);
private:
V v;
std::map<K,V> m_map;
};
template<class K, class V>
struct comp
{
bool operator()(std::pair<K, V> a, V b)
{
return a.second < b;
}
bool operator()(V a, std::pair<K, V> b)
{
return a < b.second;
}
};
template<class K, class V>
void intervalMap<K, V>::assign(const K keyBegin, const K keyEnd, const V
val)
{
auto begin = m_map.find(keyBegin);
auto end = m_map.find(keyEnd);
auto p = std::equal_range(begin, end, val,comp< K, V>());
}