只需调用对象即可获取对象数据

Getting object data by just calling a object

本文关键字:获取 取对象 数据 调用 对象      更新时间:2023-10-16

所以我确实有一个自己做的数组类:

#include <algorithm>
template <class T>
class myArray
{
private:
int length;
T *elements;
public:
myArray()
{
this->length = 0;
this->elements = nullptr;
}
myArray(int len)
{
this->length = len;
this->elements = new T[len];
}
myArray(int* data, int len)
{
this->length = len;
this->elements = new T[len];
std::copy(data, data+len, this->elements);
}
~myArray()
{
delete[] this->elements;
}
};

我认为目前它有效。我想检查我在第三个构造函数中传递的元素是否被正确复制,所以我写了这个:

int data[] = {1,2,3,4,5};
myArray<int> a (data, 5);
for (auto x: myArray)
{
std::cout << x << 'n';
}

问题是我必须在类中写什么,以使其返回这个>元素,当我只是调用myArray时。我知道这可能是微不足道的,但我不知道如何找到它,实际上如何称呼它,让谷歌为我找到答案。

您需要为类实现beginend成员函数(或作为与类位于同一命名空间中的全局函数(,这些函数返回指向第一个元素的迭代器,以及指向数组最后一个元素的迭代器。由于您的类由连续数组支持,因此您不需要实现迭代器类,只需使用指针即可。

// these are member functions, as they would be defined inside your class
T* begin() {
return elements;
}
T* end() {
return elements + length;
}

您还应该实现 const 版本。

T const* begin() const {
return elements;
}
T const* end() const {
return elements + length;
}