gpt4 book ai didi

c++ - 使用索引重置数组

转载 作者:行者123 更新时间:2023-11-28 07:29:48 25 4
gpt4 key购买 nike

我有一个数组,其大小和值在执行过程中一直在变化。我想以尽可能低的性能开销来做到这一点。

我只是让成员 int 变量指示开始和结束索引,而不是改变数组大小,我希望这个数组的使用者在 foor 循环中使用这些索引。风险在于,如果消费者不使用 start 和 endindex,最终可能会导致错误。有更好的方法吗?

所以我有:

MyClass
{

public:
BusinessClass myArray[MAX_COUNT];//the array

int StartIndex; //start index
int EndIndex; //End index

Logic()
{
//modified the array and changes start and end index
}

}

MyConsumer
{

MyClass obj;

public:
void ReadArray()
{
for (int i = obj.StartIndex ; i <obj.EndIndex; i++)
{
//perform logic
}
}

}

最佳答案

您可以使用返回 EndIndex-StartIndexlength 方法和返回数组偏移量的项的数组运算符,而不是公开底层数组StartIndex 的值。

您将像这样访问数组中的项目:

for (int i = 0; i < obj.length(); i++) {
BusinessClass &item = obj[i];
}

MyClass 类看起来像这样:

class MyClass {
public:
size_t length() const {
return EndIndex - StartIndex;
};
BusinessClass &operator[](size_t off) {
return myArray[StartIndex+off];
};

private:
BusinessClass myArray[MAX_COUNT];

int StartIndex; //start index
int EndIndex; //End index
};

关于c++ - 使用索引重置数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17958100/

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