我想重写这个for循环(有效)
for (vector<shared_ptr<Node<int>>>::iterator it = n.root.children.begin();
it != n.root.children.end();
++it)
{cout << (*it)->value<<flush;}
进入基于范围的for循环。我试过的是
for (shared_ptr<Node<int>> child:(n.root).children){
cout<<(child->value)<<" "<<flush;
}
但它给了我一个核心转储。根是Node
类型template <typename T>
class Node{
public:
T value;
vector<shared_ptr<Node>> children;
};
main.cpp中的这些行工作正常。
cout<<(n.root).value<<flush;
cout<<n.root.children.front()->value<<flush;
我使用g ++ 4.7.2。
答案 0 :(得分:2)
你好。试试这个。
for (auto v : n.root.children ) {
cout << v->value << flush;
}