Сброс массива с использованием индексов

У меня есть массив, размер и значения которого постоянно меняются во время выполнения.
Я хочу сделать это с минимальными потерями производительности.

Вместо изменения размера массива у меня просто есть переменные-члены int, указывающие начальный и конечный индексы, и я ожидаю, что потребитель этого массива будет использовать эти индексы в цикле foor. Риск заключается в том, что если потребитель не использует начало и конечный индекс, это может привести к ошибке. Есть ли лучший способ сделать это?

Итак, что у меня есть:

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
}
}

}

0

Решение

Вместо того, чтобы выставлять основной массив, вы могли бы иметь length метод, который возвращает EndIndex-StartIndexи оператор массива, который возвращает элемент из смещения массива на значение StartIndex,

Вы бы получили доступ к элементам в массиве следующим образом:

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

Мои занятия класс будет выглядеть примерно так:

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
};
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]