gpt4 book ai didi

c++ - 用于接收数组 C++ 的 LinkedList 的构造函数

转载 作者:行者123 更新时间:2023-11-27 23:28:49 24 4
gpt4 key购买 nike

正在尝试为 LinkedList 编写构造函数以使用整数数组进行初始化。

程序会调用 linked(array);这会将数组中的所有值添加到链表中。

LinkedList::LinkedList(int array[])
{
headPtr->setData(array[0]); //setData method stores the integer at position 0 inside headPtr

Node *currentPtr = headPtr;

for (int i = 0; i < array.length(); ++i) //for loop to add the integers to the next node
{
currentPtr->setNext(new Node(array[i])); //creates a new node with the integer value of array position i
}
}

问题是 array.length(来自 Java),我不认为数组长度可以通过这种方式获得?

最佳答案

我建议您使用迭代器惯用语,并使构造函数成为模板化构造函数:

class LinkedList
{
//...
public:
template<typename FwdIterator>
LinkedList(FwdIterator begin, FwdIterator end)
{
for (;begin != end; ++begin)
{
//treat begin as pointer, and *begin as dereferenced object
}
}
//...
};

然后您可以将其用作:

int arr[] = {1,2,3,4,5,6,7,8,9,10};

LinkedList lnklist(arr, arr+10);

不仅如此。如果你有 std::vector<int> ,那么你也可以用它来构造链表,如:

std::vector<int> v;
//..
LinkedList lnklist(v.begin(), v.end());

因此,使用迭代器惯用法可为您提供如此强大的功能和灵 active 。 :-)

关于c++ - 用于接收数组 C++ 的 LinkedList 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7298781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com