gpt4 book ai didi

c++ - 指向列表的 .end() 的 int 指针

转载 作者:太空狗 更新时间:2023-10-29 23:53:45 25 4
gpt4 key购买 nike

我目前正在创建一个类似于标准库的头文件。我正在为我的链表实现 .end() 。在我的 cpp 文件中,我有一个整数指针,它应该接收 .end() 的值,比如

int* itrend;
itrend = ca.end();

ca 只是我的头文件中对象的一个​​实例。在我的 hpp 文件中,我有一个列表迭代器转到我的 listofvalues.end()。我想像这样返回 .end()

int* end() 
{
std::list<value_type>::iterator i = listOfValues.end();
return (&*i);

}

我的“值列表”只是一个包含多个整数的列表。例如

[1,2,3,4,5,6,7,8,9]

在我的 hpp 文件中,我有一个列表迭代器转到我的 listofvalues.end()。我想返回 .end() 值(它返回一个列表迭代器);现在这带来了一个问题,当我想要一个整数指针时它返回列表迭代器。我试图通过使用 &* 来引用它并获取地址,这将给出一个错误,提示“List Iterator Not Dereferencable”。我知道这是因为我试图获取最后一个值之后的元素,但这正是我需要返回的,因为我正在尝试重新实现链表 .end() 方法.

有谁知道如何让一个整数指针指向 List.end()

感谢任何帮助。

最佳答案

以类似于 STL 的方式实现 begin()end() 返回 iterator,而不是指针:

template <typename value_type>
class my_list
{
public:
typedef std::list<value_type>::iterator iterator;
typedef std::list<value_type>::const_iterator const_iterator;

iterator begin() { return listofValues.begin(); }
const_iterator begin() const { return listofValues.begin(); }


iterator end() { return listofValues.end(); }
const_iterator end() const { return listofValues.end(); }
};

关于c++ - 指向列表的 .end() 的 int 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9337002/

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