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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
#1

Что быстрее использовать, массив э-в, или указатель на массив э-в? - C++

22.02.2012, 08:38. Просмотров 712. Ответов 5
Метки нет (Все метки)

уважаемые, что быстрее использовать, массив э-в, или указатель на массив э-в? или без разницы? С одной стороны обращается все к той же памяти.
Я решил протестировать и по результатам тестов выяснил что оно одинаково.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2012, 08:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что быстрее использовать, массив э-в, или указатель на массив э-в? (C++):

Что быстрее массив или файл - C++
Привет! Я тут занялся обработкой содержимого текстовых файлов для этого пишу класс отслеживающий положение курсора в файле (типа номер...

Компилятор ругается, что для индекса требуется массив или указатель - C++
У меня программа делает, по крайней мере, должна делать следующее: заполнять, линейный массив,размер которого задаются с...

Не работает динамический массив в классе: что раньше, указатель или размер? - C++
Подскажите пожалуйста где ошибка class arar { int*arr, size; public: arar() :arr(new int()), size(10) { for (int i(0); i...

Что лучше использовать vector или массив - C++
Что лучше использовать и когда vector или массив ?

Массив: Что быстрее: mass[n] или *(mass+n)? - C++
Что быстрее: mass или *(mass+n) и стоит ли заморачиваться по этому поводу?

Что лучше использовать для строк? Массив char или же string? - C++
Только не давно начал изучать с++, подскажите что лучше использовать для строк? Массив char или же string? И могу я ограничить себя...

5
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
22.02.2012, 08:42 #2
Андрей2011, когда в куда-то передаете ? Использование указателя на массив элементов даст экономию памяти, а когда еще один массив - это + затрата времени на копирование. Наверняка Вы тестировали на массиве этак "элементов 10", а взять что-то посерьезнее ?
1
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
22.02.2012, 08:53  [ТС] #3
Я делал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 TTime time,time2;
 time = Time();
 short Mass[300000],*p_Mass;
 
 p_Mass= Mass;
 for (unsigned int i = 0; i < 300000; i++)
 {
   Mass[i]=i+1; //или p_Mass[i]=i+1;
   Form1->ListBox1->Items->Add(Mass[i]);
 }
 time2 = Time()-time;
 
 
Form1->ListBox1->Items->Add(time2);
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
22.02.2012, 09:47 #4
Массив и так реализуется с помощью указателя и при адресации элементов является указателем. Так что ни какой выгоды варианты
C++
1
type a[n];
и
C++
1
type *a;
(под type подразумевается некоторый тип), в сравнении друг с другом не имеют, выгоду может содержать только инкремент/декремент адреса в сравнении с инкрементом/декрементом индекса и последующем вычислением адреса в операторе
C++
1
[]
. Но и сравнение индекса с нолём выгоднее сравнения адреса с указателем на массив. Но оба варианта декларации в равной мере компатибабельны с обоими вариантами адресации. Разница же только в том, что в одном случае указатель на начало массива неявный, а сам массив явный, а в другом наоборот.
1
_engineer_
115 / 72 / 2
Регистрация: 23.01.2012
Сообщений: 186
22.02.2012, 09:54 #5
Раньше тоже задавался этим вопросом, но спросить было не кого, поэтому просил компилятор сделать ассемблерный листинг кода и уже в нем смотрел.
ИМХО:
через указатель быстрей, если современные компиляторы не научились и это оптимизировать.
1
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
22.02.2012, 10:02  [ТС] #6
Спасибо, уважаемые.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2012, 10:02
Привет! Вот еще темы с ответами:

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. - C++
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...

Для индекса требуется массив или указатель - C++
Вот весь код: #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;vector&gt; #include&lt;algorithm&gt; #include&lt;cmath&gt; //...

error C2109: для индекса требуется массив или указатель. - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;ctime&gt; using namespace std; struct Fin

Error C2109: для индекса требуется массив или указатель - C++
Есть код,делаю его в классы,вот выскочили ошибки,помогите исправить. class PID { private: double _Kp,_Ki,_Kd; double...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
22.02.2012, 10:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru