本文介绍了使用boost interval_map的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图跟随interval_map的 boost_party 比如我做了这个例子code:

Trying to follow the boost_party example of interval_map I made this example code:

#include "boost/icl/interval.hpp"
#include "boost/icl/interval_map.hpp"
#include <set>
using namespace std;

typedef std::set<string> ids;

int main(int argc, char* argv[])
{
    ids ids1;   
    ids1.insert("T1");
    ids ids2;
    ids2.insert("T2");
    boost::icl::interval_map<boost::icl::closed_interval<int>, ids> mymap;
    boost::icl::closed_interval<int> i1 = boost::icl::closed_interval<int>(2, 7);
    boost::icl::closed_interval<int> i2 = boost::icl::closed_interval<int>(3, 8);
    mymap += make_pair(i1, ids1);
    mymap += make_pair(i2, ids2);
    return 0;
}

但这种获取的这个编译错误:

But this get's this compilation error:

error: no match for ‘operator+=’ (operand types are ‘boost::icl::interval_map<boost::icl::closed_interval<int>, std::set<std::basic_string<char> > >’ and ‘std::pair<boost::icl::closed_interval<int>, std::set<std::basic_string<char> > >’)
  mymap += make_pair(i1, ids1);

任何想法有什么不对?

Any idea what's wrong?

推荐答案

应该最有可能是 mymap.insert(make_pair(...)); 而不是 MyMap中+ = make_pair(...); 。这对语法的std :: unordered_map

should most likely be mymap.insert(make_pair(...)); instead of mymap += make_pair(...);. That's the syntax for std::unordered_map.

这篇关于使用boost interval_map的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-16 02:12