2016-08-11 9 views
0

私はstd::unordered_mapに解析したいと思います。ブーストスピリットX3とstd :: unordered_map

例コード:以下の主と

struct Base 
{ 
    int item1; 
    int item2; 
}; 

BOOST_FUSION_ADAPT_STRUCT(Base, item1, item2) 

namespace grammar 
{ 
    using namespace boost::spirit::x3; 

    auto base_ = rule<struct base_, Base>{"base"} 
      = repeat(2)[ int_ ]; 

    auto start = rule<struct start, std::unordered_map<std::int32_t, Base>>{"start"} 
      = (id_ >> base_) % eol; 
} 

namespace ios = boost::iostreams; 
namespace fs = boost::filesystem; 
namespace x3 = boost::spirit::x3; 

int main() 
{ 
    std::unordered_map<std::int32_t, Base> bases; 

    ios::mapped_file mmf("example.dat"); 

    auto beg = std::begin(mmf); 
    auto end = std::end(mmf); 

    auto ret = x3::phrase_parse(beg, end, grammar::start, x3::char_(','), bases); 

    if (ret && beg == end) 
    { 
     std::cout << "Parse ok\n"; 
    } 

    mmf.close(); 

    return 0; 
} 

一例ファイル:

1,2,3 
2,3,4 
3,4,5 

コンパイラエラーメッセージがある:

.... ‘class std::unordered_map<int, Base>’ has no member named ‘push_back’ 

次に何をすればよいのですか?std::unordered_mapに対応していますか?

+0

unordered_mapから継承し、push_back関数を実装できます。 – cqdjyy01234

+0

[ブースト1.60](http://melpon.org/wandbox/permlink/5XpIcGasUhW6GYkN)対[ブースト1.61](http://melpon.org/wandbox/permlink/H2ud3MKyMTj1G747)。 – llonesmiz

+0

@jv_、ありがとう、これは私のために働いた – Roby

答えて

1

Likee jv_と仮定して、私のブーストバージョンをアップデートすると問題が解決しました。

関連する問題