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

Массив: Что быстрее: mass[n] или *(mass+n)? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 14:58     Массив: Что быстрее: mass[n] или *(mass+n)? #1
Что быстрее: mass[n] или *(mass+n) и стоит ли заморачиваться по этому поводу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
10.07.2012, 21:47     Массив: Что быстрее: mass[n] или *(mass+n)? #41
Ребят ну вы так и не ответили,не ужели через указатель не быстрее ?
Нет не быстрее уже ответели давно.

По крайней мере если речь идет о массивах, а не о контейнерах.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
10.07.2012, 21:57     Массив: Что быстрее: mass[n] или *(mass+n)? #42
От блин,а я то надеюсь на то что указатели быстрее,всегда старался создать лишний указатель присвоить ему адрес первого элемента и инкеминтировать его

кто подскажет почему вылазиет ошибка вот в таком коде ?
C++
1
2
3
4
5
6
    int m[5] = {3,2,6,7,8};
    int *a = new int;
    *a = 0;
        for (int i =0 ; i < 5;++i,++a)
            m[*a]++;
    delete a;
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 21:58  [ТС]     Массив: Что быстрее: mass[n] или *(mass+n)? #43
xADMIRALx, *(++a)

Добавлено через 20 секунд
xADMIRALx, ты изменяешь адрес указателя. а надо значение
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
10.07.2012, 22:24     Массив: Что быстрее: mass[n] или *(mass+n)? #44
Цитата Сообщение от xADMIRALx Посмотреть сообщение
От блин,а я то надеюсь на то что указатели быстрее,всегда старался создать лишний указатель присвоить ему адрес первого элемента и инкеминтировать его
Чтобы ускорить программу на одну наносекунду?
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 22:34  [ТС]     Массив: Что быстрее: mass[n] или *(mass+n)? #45
Evg, нано ли?
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
10.07.2012, 22:38     Массив: Что быстрее: mass[n] или *(mass+n)? #46
Цитата Сообщение от Ksan Посмотреть сообщение
Evg, нано ли?
1 наносекунда - это 2-3 такта. Ну да, там цикл, так что это будет не 1 наносекунда, а 1 микросекунда, что, разумеется, в корне меняет дело
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
10.07.2012, 22:39     Массив: Что быстрее: mass[n] или *(mass+n)? #47
А почему собственно этот код должен быть быстрее?
вместо одной операции
C++
1
++i
делается две
C++
1
++i,*(++a)
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
10.07.2012, 22:51     Массив: Что быстрее: mass[n] или *(mass+n)? #48
Evg
наверн

Спасибо,разобрался с указателями
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
10.07.2012, 22:55     Массив: Что быстрее: mass[n] или *(mass+n)? #49
Объясни, на кой чёрт ты выделяешь динамически один int и каждый раз обращаешься к нему по косвенности, если можно просто завести ещё одну переменную. Если тебе хочется пройтись по списку элементов при помощи указателя, то делается это так:

C++
int m[5] = {3,2,6,7,8};
for (int *a = m; a < (m+5) ; a++)
  cout << *a << " ";
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
10.07.2012, 23:38     Массив: Что быстрее: mass[n] или *(mass+n)? #50
отвлекся на указатели забыл про int i,
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
11.07.2012, 00:27     Массив: Что быстрее: mass[n] или *(mass+n)? #51
Цитата Сообщение от Evg Посмотреть сообщение
Варианты без оптимизация вообще не имеет смысла сравнивать, когда речь идёт о том, какая конструкция быстрее.
С практической точки зрения - нет, чисто теоретически - да. И как видно разница между этими двумя конструкциями есть. А о том, что нет необходимости заморачиваться по поводу написания того или иного варианта я написал ещё в первом своём посте.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2012, 09:18     Массив: Что быстрее: mass[n] или *(mass+n)?
Еще ссылки по теме:

Что быстрее assembler или c++ C++
If или switch().case. Что быстрее C++
C++ Что быстрее: i++ или ++i ?

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 319
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
11.07.2012, 09:18     Массив: Что быстрее: mass[n] или *(mass+n)? #52
Цитата Сообщение от rangerx Посмотреть сообщение
чисто теоретически - да
Чисто теоретически компилятор может по разному построить конструкции "a+b" и "b+a". А тому всё то, что написано по разному в исходнике, теоретически всегда может быть построено по разному. А потому нет смысла в подобном сравнении
Yandex
Объявления
11.07.2012, 09:18     Массив: Что быстрее: mass[n] или *(mass+n)?
Ответ Создать тему
Опции темы

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