Форум программистов, компьютерный форум CyberForum.ru

Что делает данная строка в коде - C++

Восстановить пароль Регистрация
 
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
20.03.2014, 00:00     Что делает данная строка в коде #1
Кто может объяснить что делает данная строка в коде, вот функция в которой она используется(корманная сортировка):

C++
1
2
3
4
5
6
7
8
9
10
11
int bucketSort(int* arr, int n)
{
 int buckets[m];
 for (int j=0; j< m; ++j)
 buckets[j]=0;
 for (int i=0; i < n; ++i)
 ++buckets[arr[i]];
 for (int i=0, j=0; j < m; ++j)
 for (int k=buckets[j]; k>0; --k)
 arr[i++]=j;
 }
вот строка которая интересует:

C++
1
 ++buckets[arr[i]];
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.03.2014, 00:05     Что делает данная строка в коде #2
C++
1
2
int index = arr[i];
++buckets[index];
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
20.03.2014, 00:37  [ТС]     Что делает данная строка в коде #3
объясниете, пожалуйста, более популярно на словах

Добавлено через 1 минуту
добавляет к элементу массива buckets единицу, или не так?

Добавлено через 17 минут
а что делает это строка?

C++
1
++buckets[index];
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
20.03.2014, 00:41     Что делает данная строка в коде #4
Цитата Сообщение от sanlex25 Посмотреть сообщение
а что делает это строка?
элемент массива buckets который лежит по смещению index(indexский элемент массива) увеличивает на 1
т.е
C++
1
++buckets[index];
равносильно, в данном контексте
C++
1
buckets[index]=buckets[index]+1;
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
20.03.2014, 00:43     Что делает данная строка в коде #5
Цитата Сообщение от sanlex25 Посмотреть сообщение
C++
1
++buckets[arr[i]];
данная строка увеличивает arr[i]-й элемента массива buckets на единицу
к примеру если arr[i] = 4 то увеличится 5-й элемент массива buckets (5-й т.к. массив в с начинается с 0-го элемента)

Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
int index = arr[i];
++buckets[index];
тоже самое только записанно в более понятной форме, переменная index принимает значение i-го элемента массива arr, затем увеличиваем на единицу элемент с номером index массива buckets
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
20.03.2014, 01:31  [ТС]     Что делает данная строка в коде #6
Спасибо, и еще я понимаю чем отличается допустим преинкримент от постинкремента, но вот именно допустим в этом цикле:
C++
1
2
for (int j=0; j< m; ++j)
 buckets[j]=0;
чем будет отличаться от
C++
1
2
for (int j=0; j< m; j++)
 buckets[j]=0;
во второй записи вначале приравняет элемент массива к нулю а после в цикле добавит единицу, а в первой записи вначале добавит в цикле к j единицу, а уже после этого изменит значения элемента массива на ноль, правильно?
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
20.03.2014, 01:48     Что делает данная строка в коде #7
sanlex25,
в данном случае ничем
а вот здесь, например, очень даже
C++
1
2
3
4
int a=1;
arr[a++]=5;// запишет в arr[1] 5 а потом добавит 1 к a 
a=1;
arr[++a]=5; // добавит 1 к а, потом запишет в arr[2] 5
когда изучишь побольше то узнаешь, что пост работает с копией объекта а пред с самим объектом

Добавлено через 1 минуту
Цитата Сообщение от sanlex25 Посмотреть сообщение
во второй записи вначале приравняет элемент массива к нулю а после в цикле добавит единицу, а в первой записи вначале добавит в цикле к j единицу, а уже после этого изменит значения элемента массива на ноль, правильно?
нет будут делать одно и тоже
после точки с запятой, что пред, что пост дадут один результат
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2014, 02:16     Что делает данная строка в коде
Еще ссылки по теме:

Что означает данная строка. Указатели C++
C++ List iterator что делает данная строка кода
Что делает данная конструкция? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
20.03.2014, 02:16  [ТС]     Что делает данная строка в коде #8
спасибо за информацию
Yandex
Объявления
20.03.2014, 02:16     Что делает данная строка в коде
Ответ Создать тему
Опции темы

Текущее время: 08:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru