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

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

Войти
Регистрация
Восстановить пароль
 
 
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
#1

Нужны ли в реальной практике массивы? - C++

11.07.2014, 18:06. Просмотров 1073. Ответов 27
Метки нет (Все метки)

Вопрос такой: нужны ли в реальной практике массивы? Или это лишь пережиток С? Имеют ли массивы реальные преимущества перед векторами, например?
Почему спрашиваю - сейчас изучаю STL алгоритмы, такие как sort(), reverse(), find() и проч. и кажется это все очень удобным при использовании с векторами. Так нужны ли массивы после этого?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2014, 18:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужны ли в реальной практике массивы? (C++):

Зачем нужны обычные массивы, если есть динамические? - C++
Всем привет! Вопрос в заголовке. Если динамический массив даёт те же и ещё больше функций и, при том, лучше обращается с памятью, зачем...

Для чего нужны переменные, и прочее типа, константа, типы , массивы и т.к.д ? - C++
Для чего нужны переменные, и прочее типа, константа, типы , массивы и т.к.д

Задачи приближенные к реальной работе - C++
Привет. Думаю много кто из форумчан, уже выполнял практические задания, (например работая джуниором, или уже не джуниором), ну вообщем кому...

Общие вопросы для реальной работы - C++
Привет! Скажите пожалуйста на сколько рально самостоятельно изучить С++, что бы потом работать обычным программистом и иметь спрос...

Какими средствами С++ делать захват не с веб, а с реальной камеры? - C++
Каким образом можно осуществить захват не с веб камеры а скажем с цифровой камеры которая стоит в комнате ?? Для этого нужно писать клиент...

Какие значения нужны нужны циклу while? - C++
#include <algorithm> #include <iostream> #include <vector> using namespace std; int main(void) { int A={1,2,3,4,49,100,49};...

27
Lers
13 / 13 / 3
Регистрация: 27.05.2012
Сообщений: 203
11.07.2014, 18:10 #2
Если я не ошибаюсь, то массив и вектор - это одно и тоже.

Добавлено через 35 секунд
если одномерный массив
1
xod
156 / 46 / 17
Регистрация: 01.07.2014
Сообщений: 185
11.07.2014, 18:12 #3
Массивы - это будущее нашей цивилизации. Массивы позволят
создать программы с искусственным интеллектом. Вы конечно
имеете право забыть массивы, равно как и программирование.
Каждому своё. Моё мнение: мир держится на массивах!!
0
Тамика
Котовчанин
911 / 454 / 144
Регистрация: 16.02.2010
Сообщений: 3,117
Записей в блоге: 27
11.07.2014, 18:20 #4
Как минимум, для того, чтоб нормально понимать логику работы вектора Вам нужно знать массивы. И не только. А иначе какой смысл от вектора, если Вы не знаете, как он работает?
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,041
11.07.2014, 18:29 #5
randy92, как бы Вы реализовали свой вектор?
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
11.07.2014, 18:34 #6
Цитата Сообщение от randy92 Посмотреть сообщение
Или это лишь пережиток С
Пережиток C. Сейчас имеет смысл от них отказаться в пользу std::vector и std::array

Цитата Сообщение от randy92 Посмотреть сообщение
Имеют ли массивы реальные преимущества перед векторами, например?
Преимуществ никаких
0
zer0mail
2344 / 1974 / 193
Регистрация: 03.07.2012
Сообщений: 7,095
Записей в блоге: 1
11.07.2014, 18:35 #7
ТС, напишите умножение матриц (хотя бы 2-3- мерных) на векторах. Интересно, сколько потеряете в скорости (1 порядок или больше... ) В физике (и не только в физике) для расчетов используют массивы.
0
Renji
1925 / 1323 / 298
Регистрация: 05.06.2014
Сообщений: 3,809
11.07.2014, 18:35 #8
Вопрос такой: нужны ли в реальной практике массивы? Или это лишь пережиток С? Имеют ли массивы реальные преимущества перед векторами, например?
Вектор размещает данные в динамической памяти, а динамическая память выделяется медленно и печально (по сравнению с памятью в стеке). Или требует аллокатора заточенного под конкретный случай.
Почему спрашиваю - сейчас изучаю STL алгоритмы, такие как sort(), reverse(), find() и проч. и кажется это все очень удобным при использовании с векторами.
Они и для обычных массивов прекрасно работают.
0
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
11.07.2014, 18:36  [ТС] #9
Понятно, что двумерные массивы эффективнее векторов. Это я уже усвоил
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
11.07.2014, 18:39 #10
Цитата Сообщение от zer0mail Посмотреть сообщение
Интересно, сколько потеряете в скорости
Нисколько. За счет чего по твоему будет потеря в скорости ( тем более аж на порядок ) ?

Цитата Сообщение от randy92 Посмотреть сообщение
Понятно, что двумерные массивы эффективнее векторов. Это я уже усвоил
Нет, не эффективнее
1
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,041
11.07.2014, 18:39 #11
Цитата Сообщение от randy92 Посмотреть сообщение
Понятно, что двумерные массивы эффективнее векторов. Это я уже усвоил
Это зависит. Не нужно таких резких выводов. Сам по себе массив не может быть более или менее эффективным - это данные. Вопрос в том, как с ними работать. Если копать в сторону низкоуровневой оптимизации, то нужно учитывать сколько влезает в cache line и как производится обращение к памяти.
0
DrOffset
7321 / 4421 / 1001
Регистрация: 30.01.2014
Сообщений: 7,259
12.07.2014, 03:22 #12
Цитата Сообщение от Voivoid Посмотреть сообщение
Нет, не эффективнее
Такой же резкий вывод, как и этот:
Цитата Сообщение от randy92 Посмотреть сообщение
Понятно, что двумерные массивы эффективнее векторов.
-------
Цитата Сообщение от Voivoid Посмотреть сообщение
За счет чего по твоему будет потеря в скорости ( тем более аж на порядок ) ?
Не стану ничего утверждать про проценты и порядки. Т.к. реальные цифры получатся только на реальных задачах. Но вообще определенная неэффективность будет наблюдаться, например, на задаче умножения матриц, при условии, что матрица задана вектором векторов (я надеюсь автор комментария именно такие вектора имел в виду).
Кстати, на основании присутствия этой неэффективности, был продемонстрирован один из методов оптимизации основанный на шаблонах (хорошо описан в книге Н. Джосаттиса) или вот в этой статье.
Но это никак, в общем-то, не обосновывает, что именно массивы быстрее. Просто что быстрее, в данном случае, зависит от гораздо больших факторов, чем природа контейнеров.
В общем, я поддерживаю 0x10.
1
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,523
12.07.2014, 03:47 #13
Цитата Сообщение от randy92 Посмотреть сообщение
сейчас изучаю STL алгоритмы, такие как sort(), reverse(), find() и проч. и кажется это все очень удобным при использовании с векторами
А с массивами чем неудобно?

Цитата Сообщение от Voivoid Посмотреть сообщение
Нет, не эффективнее
Эффективнее, как минимум, за счёт отсутствия проверок на выход за границу.
0
DrOffset
7321 / 4421 / 1001
Регистрация: 30.01.2014
Сообщений: 7,259
12.07.2014, 03:52 #14
Цитата Сообщение от Qwertiy Посмотреть сообщение
Эффективнее, как минимум, за счёт отсутствия проверок на выход за границу.
В векторе так-то (по крайней мере в релизном варианте) их тоже нет (метод at не считаем им все равно почти никто не пользуется)
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,523
12.07.2014, 10:47 #15
Цитата Сообщение от DrOffset Посмотреть сообщение
В векторе так-то (по крайней мере в релизном варианте) их тоже нет
VS когда-то так не считала... Сейчас похоже переделали, чтоб соответствовало стандарту.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2014, 10:47
Привет! Вот еще темы с ответами:

Структуры данных на практике - C++
Прошел структуры данных (связные списки, стек, очередь, дерево), но когда, зачем, как часто и при каких обстоятельствах прибегают к их...

Нужны 2 программы на массивы. - QBasic
3. Найти произведения положительных и отрицательных элементов массива x(i) i=1,15 4. Задана матрица a(i;j), (i=1,3; j=1,4) . ...

Массивы.Надо поменять местами строки.(нужны пояснения) - C (СИ)
В сгенерированном массиве определённой размерности поменять местами местами определённые строки. Очень нужны пояснения, мне потом надо...

Как вручную уничтожать массивы, зная, что они уже не нужны программе - C#
Помогите разобраться. Программа выдает ошибку "System.OutOfMemoryException" на строку string MX= new string ; где hsize = 317; ...


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

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

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