У меня действительно есть чувство, что люди будут пытаться избить меня по голове и сказать: "Ты не должен этого делать!"(и я вполне осознаю этот факт);тем не менее, вот моя проблема:
Предположим, у вас есть следующий код C ++:
РЕДАКТИРОВАТЬ: Я думаю, что я не показал достаточно того, что я пытаюсьделать, хотя большинство ответов было превосходным.Итак, вот отредактированная версия моего кода.Суть в том, что на каждой итерации мне все еще нужно использовать массив значений, который оказывается подмассивом x
, а не просто одним значением индекса:
unsigned int n = 2000; // or any other number for that matter
double * x = new double[n];
double resultArray;
// fill array with meaningful data
// do all kinds of initializations
for( int i=0 ; i<someNumber ; ++i ){ //someNumber ~ 1900
// do some stuff
for (j=0 ; j<someSmallerNumber ; ++j){ //someSmallerNumber ~ 15
resultArray[j] = x[j] * someFunction(resultArray[j]);
}
++x; //increment pointer to the first element of the array
// do some more stuff
}
РЕДАКТИРОВАНИЕ: Причина, по которой я использую ++x
во внешнем цикле, заключается в том, что если бы я использовал x[outerIndex+innerIndex]
вместо просто x[innerIndex]
, я бы выполнил много больше дополненийза одну итерацию, и это алгоритм, тяжело работающий с алгеброй, поэтому я пытаюсь выжать из него некоторую производительность.
Я хотел бы отметить, что мой алгоритм никогда не пытается читать несуществующую память.Это просто проблема скорости обработки, когда я пытаюсь не пересчитывать текущий индекс массива больше, чем нужно.Это работает отлично, и я доволен этим.
Теперь я пытаюсь реализовать подобный алгоритм в Java (и Java не в моей области знаний).Однако я знаю, что Java на самом деле не дает вам доступа к указателям и обрабатывает все как объект.Мой вопрос, конечно, есть ли эффективный способ выполнить эквивалент ++x
, где x
- это адрес первого элемента массива в Java?Есть ли способ удалить первый элемент массива вместо этого?Есть ли хорошие быстрые алгоритмы, на которые стоит обратить внимание, если они не являются частью встроенных манипуляций с массивами Java?
Заранее спасибо!=)