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
に対応していますか?
unordered_mapから継承し、push_back関数を実装できます。 – cqdjyy01234
[ブースト1.60](http://melpon.org/wandbox/permlink/5XpIcGasUhW6GYkN)対[ブースト1.61](http://melpon.org/wandbox/permlink/H2ud3MKyMTj1G747)。 – llonesmiz
@jv_、ありがとう、これは私のために働いた – Roby