Size: a a a

2020 August 17

LD

Lyserg Ditel in supapro.cxx
Tony Werner
У тебя array должен быть int*, а не int**
Там условный reinterpret_cast, только в си варианте
источник

TW

Tony Werner in supapro.cxx
Нужно не weight, а width)
источник

TW

Tony Werner in supapro.cxx
Я не понимаю что ты в нем делаешь, если честно)
источник

LD

Lyserg Ditel in supapro.cxx
Сделал, что бы ptr указывал на первый элемент 2д массива, в цикле инициализировал, ничего не изменилось, все так же плоская структура, только malloc один раз вызывается
источник

TW

Tony Werner in supapro.cxx
int* matrix = (int*)malloc(width*height*sizeof(int));
Вот так же нужно массив одномерный выделять
источник

TW

Tony Werner in supapro.cxx
*я просто всё ещё нахожусь в контексте нашего разговора о хранении двумерного массива в одномерном*
источник

LD

Lyserg Ditel in supapro.cxx
Tony Werner
int* matrix = (int*)malloc(width*height*sizeof(int));
Вот так же нужно массив одномерный выделять
Угу, только мне потом не нравится, что мне к этому обращаться через индексатор, как matrix[index * height + jIndex] когда можно matrix[Index][jIndex]
источник

LD

Lyserg Ditel in supapro.cxx
Tony Werner
*я просто всё ещё нахожусь в контексте нашего разговора о хранении двумерного массива в одномерном*
Я понимаю, он так и будет в памяти лежать
источник

LD

Lyserg Ditel in supapro.cxx
Lyserg Ditel
Угу, только мне потом не нравится, что мне к этому обращаться через индексатор, как matrix[index * height + jIndex] когда можно matrix[Index][jIndex]
Что бы можно было через [][]
источник

LD

Lyserg Ditel in supapro.cxx
Lyserg Ditel
Например, пойдет ?

int lenght;
int *ptr, **array;

lenght = sizeof(int*) * width + sizeof(int) * width * height;
array = (int**)malloc(lenght);

ptr = (int*)(array + width);

for(int iIndex = 0; iIndex < width; iIndx++)
       array[iIndex] = (ptr + width * iIndex);

Все, с этим прекрасно можно работать, как:
for(iIndex)
   for(jIndex)
          array[iIndex][jIndex] = <do smthg>
Делаю ровно это
источник

TW

Tony Werner in supapro.cxx
Сделай get_element(int* matrix, int i, int j) :)
источник

TW

Tony Werner in supapro.cxx
Lyserg Ditel
Что бы можно было через [][]
Ну ок)
источник

LD

Lyserg Ditel in supapro.cxx
Tony Werner
Сделай get_element(int* matrix, int i, int j) :)
А gcc умеет инлайнить функции ? То есть что бы в ассемблере не было джампов, а он прям тело метода подставил ? Ибо я хочу итерировать по всему этому делу и не хочу джампов на каждую итерацию
источник

AS

Anatoly Shirokov in supapro.cxx
Lyserg Ditel
Например, пойдет ?

int lenght;
int *ptr, **array;

lenght = sizeof(int*) * width + sizeof(int) * width * height;
array = (int**)malloc(lenght);

ptr = (int*)(array + width);

for(int iIndex = 0; iIndex < width; iIndx++)
       array[iIndex] = (ptr + width * iIndex);

Все, с этим прекрасно можно работать, как:
for(iIndex)
   for(jIndex)
          array[iIndex][jIndex] = <do smthg>
Ад и израиль
источник

ПК

Побитый Кирпич... in supapro.cxx
Lyserg Ditel
Например, пойдет ?

int lenght;
int *ptr, **array;

lenght = sizeof(int*) * width + sizeof(int) * width * height;
array = (int**)malloc(lenght);

ptr = (int*)(array + width);

for(int iIndex = 0; iIndex < width; iIndx++)
       array[iIndex] = (ptr + width * iIndex);

Все, с этим прекрасно можно работать, как:
for(iIndex)
   for(jIndex)
          array[iIndex][jIndex] = <do smthg>
А тебе точно нужен С, а не С++?
источник

LD

Lyserg Ditel in supapro.cxx
Побитый Кирпич
А тебе точно нужен С, а не С++?
Что мне С++ даст в этом контексте, баундчеки ?
источник

TW

Tony Werner in supapro.cxx
Lyserg Ditel
А gcc умеет инлайнить функции ? То есть что бы в ассемблере не было джампов, а он прям тело метода подставил ? Ибо я хочу итерировать по всему этому делу и не хочу джампов на каждую итерацию
Что то инлайнит что то нет. Как сам решит)
источник

LD

Lyserg Ditel in supapro.cxx
Anatoly Shirokov
Ад и израиль
Конструктивно
источник

ПК

Побитый Кирпич... in supapro.cxx
Lyserg Ditel
Что мне С++ даст в этом контексте, баундчеки ?
В С++ тебе не нужно задавать вопрос "как выделить память". Там ты просто создаёшь объект "массив" и он сам выделяет память
источник

ПК

Побитый Кирпич... in supapro.cxx
Lyserg Ditel
А gcc умеет инлайнить функции ? То есть что бы в ассемблере не было джампов, а он прям тело метода подставил ? Ибо я хочу итерировать по всему этому делу и не хочу джампов на каждую итерацию
Умеет
источник