指向指针结构的指针的迭代器
Iterator over pointer to pointer structure
我在两个结构上编写了一个自定义容器:一个 T T* _a
数组和一个指向 T T** _b
的指针数组。
第一个数组是一个简单的数组,第二个数组包含指向第一个数组的单元格的指针。
两个结构的迭代器都是常量和随机访问的。我已经实现了所有方法,第一个结构的迭代器工作正常。对于第二个......不是那么多。
编译时,当我尝试使用 begin()
和 end()
:
遍历元素时出现此错误
error: invalid conversion from ‘int**’ to ‘const int**’ [-fpermissive]
return const_iterator(_b);
但我不知道如何解决它。我明白这是因为构造函数要求一个指向常量指针的指针
const_iterator(const T **p) : ptr(p) {}
但这不是我所拥有的,因为 _b
是容器的一个属性,它不是常量。对于另一个迭代器,它工作得很好(唯一改变的是迭代器中的几个解引用 class)。
Here's the code of the problematic iterator. Here's 有效的那个。除了我做的那个,应该还有什么区别?谢谢!
答案正如 Igor 在关于 int** 转换为 const int** 的评论中所说。我认为它像 int* 一样工作,但事实并非如此。我找到了更多信息 here。
我在两个结构上编写了一个自定义容器:一个 T T* _a
数组和一个指向 T T** _b
的指针数组。
第一个数组是一个简单的数组,第二个数组包含指向第一个数组的单元格的指针。
两个结构的迭代器都是常量和随机访问的。我已经实现了所有方法,第一个结构的迭代器工作正常。对于第二个......不是那么多。
编译时,当我尝试使用 begin()
和 end()
:
error: invalid conversion from ‘int**’ to ‘const int**’ [-fpermissive]
return const_iterator(_b);
但我不知道如何解决它。我明白这是因为构造函数要求一个指向常量指针的指针
const_iterator(const T **p) : ptr(p) {}
但这不是我所拥有的,因为 _b
是容器的一个属性,它不是常量。对于另一个迭代器,它工作得很好(唯一改变的是迭代器中的几个解引用 class)。
Here's the code of the problematic iterator. Here's 有效的那个。除了我做的那个,应该还有什么区别?谢谢!
答案正如 Igor 在关于 int** 转换为 const int** 的评论中所说。我认为它像 int* 一样工作,但事实并非如此。我找到了更多信息 here。