質問: ### 前提・実現したいこと boost/foreach.hpp で定義されている BOOST_FOREACH を使って ネストになっているMap構造のデータを走査したいと考えているのですが、子ノードの値を取り出せず,親の部分しか取り出すことができていません。 再帰処理を行って子ノードを表示させようとしているのですが、ネストになっているかどうかを判定する関数などはboostにあるのでしょうか? ### 該当のソースコード ``` //関数 void roop(ptree pt) { BOOST_FOREACH(const boost::property_tree::ptree::value_type& e, pt) { if(ネストになっているかを判定する関数) { //親の値で再帰処理 roop(e->second); //ネストになっていない場合表示する } else { // 親のキーと値しか表示できません std::cout << e.first << ":" << e.second.data() << "\n"; } } } //JSON { "Data": { "z" : 100, "a" : 1, "info": [ {"id": 1, "name": "Alice"}, {"id": 2, "name": "Millia"} ] } } ``` ### 試したこと ネストになっているか 最終的には配列になっているのかを判定したいので boost のリファレンスを見ていますが見つかっておりません ### 補足情報(言語/FW/ツール等のバージョンなど) Visual C++ 2017
回答: こんにちは。 ptreeを使ったことはないのですが、ptreeは1階層分のコンテナになっているようです。そして、size()メンバ関数があるので`if (e.size() > 0)`で判定できないでしょうか?