【问题标题】:initializer list constructor for custom list class自定义列表类的初始化列表构造函数
【发布时间】:2013-10-02 14:12:10
【问题描述】:

我正在尝试为学校作业“重新制作”列表类。但是,我不知道如何让初始化列表构造函数工作。到目前为止我所拥有的:

ListNodes

struct ListNode
{
   ListNode(int value, ListNode* tail = nullptr) : data(value), next(tail) {}
   int        data;
   ListNode* next;
};

在 List.h 中

List(std::initializer_list<int>);

在 List.cc 中

List::List(std::initializer_list<int> il)
{
  head_ = copy(il, il.size()); //some form of recursive copy-function
}

我不知道如何继续使用复制功能。我试过 std::copy 但这只是给我一个段错误。

有人知道该怎么做吗?

【问题讨论】:

  • 对于每个列表元素,您应该调用insert。此外,您必须编写一个insert 函数。
  • 是的,但是这个任务的一部分是所有可以递归处理的东西都应该递归处理。您对如何递归地进行插入有什么建议吗?

标签: c++ list recursion constructor initializer


【解决方案1】:

根据这个page,您可以使用经典的开始/结束迭代初始化器列表

【讨论】:

  • 是的,但是我该如何递归呢?通过调用copy(il.begin(), il.end())?那应该怎么看? ListNode* copy(initializer_list&lt;int&gt;::iterator begin, initializer_list&lt;int&gt;::iterator end)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2017-05-02
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多