C++ 访问stl列表的第一个节点

C++ 访问stl列表的第一个节点,c++,recursion,stl,C++,Recursion,Stl,我正在尝试将stl列表的第一个节点分配给二叉树节点。。。 我面临的问题是,我在stl列出的函数中没有看到允许我这样做的工具 例如: 如果我创建以下列表: list<int> L; L.push_front(10); L.push_back(20); L.push_back(30); L.push_back(40); L.push_back(50); L.push_back(60); L.push_back(70); 列表L; L.向前推(10); L.推回(20); L.推回(30

我正在尝试将stl列表的第一个节点分配给二叉树节点。。。 我面临的问题是,我在stl列出的函数中没有看到允许我这样做的工具

例如: 如果我创建以下列表:

list<int> L;
L.push_front(10);
L.push_back(20);
L.push_back(30);
L.push_back(40);
L.push_back(50);
L.push_back(60);
L.push_back(70);
列表L;
L.向前推(10);
L.推回(20);
L.推回(30);
L.推回(40);
L.推回(50);
L.推回(60);
L.推回(70);
名单应该是:10,20,30,40,50,60,70

我的问题是,是否有一种方法可以将新节点(特别是我使用的是二叉树节点)分配给列表的第一个节点。我需要节点值而不是整数值,才能传递到将列表转换为二叉树的函数中

这不起作用的原因很明显:

binary_tree_node<Item> *node = list.front();
binary_tree_node*node=list.front();
因为它试图将一个整数赋值给一个节点值,但我只是好奇是否有办法将第一个节点赋值给一个新节点

这就是我正在尝试使用的函数

template <class Item>
binary_tree_node<Item>* convert(list<Item> &list, int start, int end)
{
binary_tree_node<Item> *node = list.front();
if (start > end) return NULL;
int mid = start + (end - start) / 2;
binary_tree_node<Item>* leftChild = convert(list, start, mid-1);
binary_tree_node<Item>* parent = new binary_tree_node<Item> (node->data());
parent->left() = leftChild;
node = node->next();
parent->right() = convert(list, mid+1, end);
return parent;
}

template <class Item> 
binary_tree_node<Item>* convert(list<Item> &head, int n) 
{
return convert(head, 0, n-1);
}
模板
二叉树节点*转换(列表和列表、整数开始、整数结束)
{
二进制_树_节点*node=list.front();
如果(开始>结束)返回NULL;
int mid=start+(end-start)/2;
二叉树节点*leftChild=convert(列表、开始、中间1);
二叉树节点*父节点=新的二叉树节点(节点->数据());
父->左()=leftChild;
node=node->next();
父->右()=转换(列表,中间+1,结束);
返回父母;
}
模板
二叉树节点*转换(列表和头,整数n)
{
返回转换(头,0,n-1);
}

我建议您在类
二叉树节点中创建一个构造函数,如下所示:

class binary_tree_node<T> {
    T classMember;

    binary_tree_node(T &data) {
        classMember = data;
    }
}

此外,
list.front()
只提供列表中的第一个元素,我认为您希望在进入下一个递归之前删除它,因此请确保在列表中的第一个元素无效时调用
list.pop\u front()

什么是二叉树节点?你的自定义类?你想做什么?创建二叉树?在二叉树节点中使用
std::list
?使用
std::list
包含节点?这是一个自定义模板类实现,由本课程所用教科书的作者编写@Jarod42任务的总体目标是获取stl列表,并使用递归函数@Thomas Matthews将其转换为二叉搜索树
binary_tree_node<Item> *node = new binary_tree_node(list.front());