Другие языки программирования и технологии

С++ Какой из способов по вашему лучше и главное почему? Спасибо.

Пробег по строчкам матрицы int arr[N][N];:

Способ 1:
for ( int row = 0; row <= N - 1; row++ ) {
for ( int col = 0; col <= N - 1; col++ ) {
arr[row][col] = какое то действие;
}
}

Способ 2:
for ( int row = 0; col = 0; row <= N - 1;) {
arr[row][col] = какое то действие;
col++;
if ( col == N) {row++; col = 0; }
}
А лучшую оптимизацию обеспечивает Intel c++ compiler
Александр Фомичев
Александр Фомичев
50 264
Лучший ответ
Циклы оптимизируются компилятором лучше, чем отдельные действия. И выглядят проще.
for ( int row = 0; col = 0; row <= N - 1;)
; должно быть 2, правильней хоть так
for ( int row = 0, col = 0; row <= N - 1; col++)
или чтот подобное

ну и лучше по читаемости
for ( int row = 0; row < N; row++ )
for ( int col = 0; col < N; col++ )
arr[row][col] = какое то действие;

отступы здесь не показаны, но так лучше.
Ну и переменные я бы писал так
for ( int i = 0; i < N; i++ )
for ( int j = 0; j < N; j++ )
arr[i][j] = какое то действие;

так как в математике строка есть i столбец j обычно
Владимир Байда
Владимир Байда
51 232
конечно же первый, потому, что он лучше читается
только вместо "<= N - 1" надо " < N"

второй код придётся изучать, и поняв,
что его можно было написать проще
нелестно отозваться об авторе
Я бы написал так (если порядок обхода не имеет значения):
for (int row = N; --row >= 0; )
for (int col = N; --col >= 0; )
Однако согласен с предыдущими ответами, что лучше доверить оптимизацию циклов компилятору. Так же согласен, что "<= N - 1" лучше заменить на " < N".
Мазуркевич Валерий Блин класс спасибо)
Короче с указателем:
for(int *i=&arr[0][0], *j=&arr[N][N]; i<j; i++) *i = действие;
Мазуркевич Валерий Я не понял, простите, ни хрена
До указателей еще не дошел )
Андрей Золотарёв Круто! Но есть одно "но". Этот вариант не годится, если важно знать координаты ячейки.