我想构建一个如下构造的矢量树
struct myStruct {
int a;
string b;
};
typedef boost::make_recursive_variant<
myStruct *
, std::vector< boost::recursive_variant_ >
>::type myStruct_tree;
如果我在这些向量中追加多个向量和向量,我将如何使用某种位置向量遍历树
vector<int>
用于定位向量指针树中定义的每个向量/子向量中的对象位置。
答案 0 :(得分:0)
我不是100%肯定我理解你的问题,所以请澄清我是否出错了。我假设向量是一个路径,每个元素给出要移动的元素的索引。考虑到这一点,我会尝试这样的事情:
myStruct_tree t = ...;
myStruct_tree* tit = &t;
for(iterator pit=path.begin(); pit!=path.end(); ++pit)
{
// retrieve branches at current position
vector<myStruct_tree>& vec = get<2>(*tit);
// get next position in tree, will throw on bad index
tit = &vec.at(*pit);
}
assert(tit);
// retrieve the leaf at the final position
myStruct* res = get<1>(*tit);
注意:
get<1>(*tit);
,我的意思是检索第一个元素的那个(即myStruct指针)。此外,它应该是返回引用或抛出以处理错误的那个。