////////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2009-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/container for documentation. // ////////////////////////////////////////////////////////////////////////////// #include <boost/container/detail/config_begin.hpp> #include <boost/container/detail/workaround.hpp> //[doc_recursive_containers #include <boost/container/vector.hpp> #include <boost/container/stable_vector.hpp> #include <boost/container/deque.hpp> #include <boost/container/list.hpp> #include <boost/container/map.hpp> #include <boost/container/string.hpp> using namespace boost::container; struct data { int i_; //A vector holding still undefined class 'data' vector<data> v_; vector<data>::iterator vi_; //A stable_vector holding still undefined class 'data' stable_vector<data> sv_; stable_vector<data>::iterator svi_; //A stable_vector holding still undefined class 'data' deque<data> d_; deque<data>::iterator di_; //A list holding still undefined 'data' list<data> l_; list<data>::iterator li_; //A map holding still undefined 'data' map<data, data> m_; map<data, data>::iterator mi_; friend bool operator <(const data &l, const data &r) { return l.i_ < r.i_; } }; struct tree_node { string name; string value; //children nodes of this node list<tree_node> children_; list<tree_node>::iterator selected_child_; }; int main() { //a container holding a recursive data type stable_vector<data> sv; sv.resize(100); //Let's build a tree based in //a recursive data type tree_node root; root.name = "root"; root.value = "root_value"; root.children_.resize(7); root.selected_child_ = root.children_.begin(); return 0; } //] #include <boost/container/detail/config_end.hpp>