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

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

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

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

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

Вопрос такой: нужны ли в реальной практике массивы? Или это лишь пережиток С? Имеют ли массивы реальные преимущества перед векторами, например?
Почему спрашиваю - сейчас изучаю STL алгоритмы, такие как sort(), reverse(), find() и проч. и кажется это все очень удобным при использовании с векторами. Так нужны ли массивы после этого?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2014, 18:06     Нужны ли в реальной практике массивы?
Посмотрите здесь:
Зачем нужны обычные массивы, если есть динамические? C++
Для чего нужны переменные, и прочее типа, константа, типы , массивы и т.к.д ? C++
Задачи приближенные к реальной работе C++
Общие вопросы для реальной работы C++
Какими средствами С++ делать захват не с веб, а с реальной камеры? C++
Какие значения нужны нужны циклу while? C++
C++ Структуры данных на практике
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lers
12 / 12 / 3
Регистрация: 27.05.2012
Сообщений: 203
11.07.2014, 18:10     Нужны ли в реальной практике массивы? #2
Если я не ошибаюсь, то массив и вектор - это одно и тоже.

Добавлено через 35 секунд
если одномерный массив
xod
156 / 46 / 17
Регистрация: 01.07.2014
Сообщений: 185
11.07.2014, 18:12     Нужны ли в реальной практике массивы? #3
Массивы - это будущее нашей цивилизации. Массивы позволят
создать программы с искусственным интеллектом. Вы конечно
имеете право забыть массивы, равно как и программирование.
Каждому своё. Моё мнение: мир держится на массивах!!
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
11.07.2014, 18:20     Нужны ли в реальной практике массивы? #4
Как минимум, для того, чтоб нормально понимать логику работы вектора Вам нужно знать массивы. И не только. А иначе какой смысл от вектора, если Вы не знаете, как он работает?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
11.07.2014, 18:29     Нужны ли в реальной практике массивы? #5
randy92, как бы Вы реализовали свой вектор?
Voivoid
674 / 277 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
11.07.2014, 18:34     Нужны ли в реальной практике массивы? #6
Цитата Сообщение от randy92 Посмотреть сообщение
Или это лишь пережиток С
Пережиток C. Сейчас имеет смысл от них отказаться в пользу std::vector и std::array

Цитата Сообщение от randy92 Посмотреть сообщение
Имеют ли массивы реальные преимущества перед векторами, например?
Преимуществ никаких
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
11.07.2014, 18:35     Нужны ли в реальной практике массивы? #7
ТС, напишите умножение матриц (хотя бы 2-3- мерных) на векторах. Интересно, сколько потеряете в скорости (1 порядок или больше... ) В физике (и не только в физике) для расчетов используют массивы.
Renji
1878 / 1276 / 290
Регистрация: 05.06.2014
Сообщений: 3,642
11.07.2014, 18:35     Нужны ли в реальной практике массивы? #8
Вопрос такой: нужны ли в реальной практике массивы? Или это лишь пережиток С? Имеют ли массивы реальные преимущества перед векторами, например?
Вектор размещает данные в динамической памяти, а динамическая память выделяется медленно и печально (по сравнению с памятью в стеке). Или требует аллокатора заточенного под конкретный случай.
Почему спрашиваю - сейчас изучаю STL алгоритмы, такие как sort(), reverse(), find() и проч. и кажется это все очень удобным при использовании с векторами.
Они и для обычных массивов прекрасно работают.
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
11.07.2014, 18:36  [ТС]     Нужны ли в реальной практике массивы? #9
Понятно, что двумерные массивы эффективнее векторов. Это я уже усвоил
Voivoid
674 / 277 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
11.07.2014, 18:39     Нужны ли в реальной практике массивы? #10
Цитата Сообщение от zer0mail Посмотреть сообщение
Интересно, сколько потеряете в скорости
Нисколько. За счет чего по твоему будет потеря в скорости ( тем более аж на порядок ) ?

Цитата Сообщение от randy92 Посмотреть сообщение
Понятно, что двумерные массивы эффективнее векторов. Это я уже усвоил
Нет, не эффективнее
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
11.07.2014, 18:39     Нужны ли в реальной практике массивы? #11
Цитата Сообщение от randy92 Посмотреть сообщение
Понятно, что двумерные массивы эффективнее векторов. Это я уже усвоил
Это зависит. Не нужно таких резких выводов. Сам по себе массив не может быть более или менее эффективным - это данные. Вопрос в том, как с ними работать. Если копать в сторону низкоуровневой оптимизации, то нужно учитывать сколько влезает в cache line и как производится обращение к памяти.
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
12.07.2014, 03:22     Нужны ли в реальной практике массивы? #12
Цитата Сообщение от Voivoid Посмотреть сообщение
Нет, не эффективнее
Такой же резкий вывод, как и этот:
Цитата Сообщение от randy92 Посмотреть сообщение
Понятно, что двумерные массивы эффективнее векторов.
-------
Цитата Сообщение от Voivoid Посмотреть сообщение
За счет чего по твоему будет потеря в скорости ( тем более аж на порядок ) ?
Не стану ничего утверждать про проценты и порядки. Т.к. реальные цифры получатся только на реальных задачах. Но вообще определенная неэффективность будет наблюдаться, например, на задаче умножения матриц, при условии, что матрица задана вектором векторов (я надеюсь автор комментария именно такие вектора имел в виду).
Кстати, на основании присутствия этой неэффективности, был продемонстрирован один из методов оптимизации основанный на шаблонах (хорошо описан в книге Н. Джосаттиса) или вот в этой статье.
Но это никак, в общем-то, не обосновывает, что именно массивы быстрее. Просто что быстрее, в данном случае, зависит от гораздо больших факторов, чем природа контейнеров.
В общем, я поддерживаю 0x10.
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
12.07.2014, 03:47     Нужны ли в реальной практике массивы? #13
Цитата Сообщение от randy92 Посмотреть сообщение
сейчас изучаю STL алгоритмы, такие как sort(), reverse(), find() и проч. и кажется это все очень удобным при использовании с векторами
А с массивами чем неудобно?

Цитата Сообщение от Voivoid Посмотреть сообщение
Нет, не эффективнее
Эффективнее, как минимум, за счёт отсутствия проверок на выход за границу.
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
12.07.2014, 03:52     Нужны ли в реальной практике массивы? #14
Цитата Сообщение от Qwertiy Посмотреть сообщение
Эффективнее, как минимум, за счёт отсутствия проверок на выход за границу.
В векторе так-то (по крайней мере в релизном варианте) их тоже нет (метод at не считаем им все равно почти никто не пользуется)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2014, 10:47     Нужны ли в реальной практике массивы?
Еще ссылки по теме:
C++ Как на практике используются указатели на члены класса
C++ Применение принципов ООП на практике (мнение о приведенном коде)
Может ли вообще на практике возникнуть ситуация, когда определенный класс следует указывать как друго самого себя? C++
База данных с++ "Добыча угля" (Отчет по практике) C++

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

Или воспользуйтесь поиском по форуму:
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
12.07.2014, 10:47     Нужны ли в реальной практике массивы? #15
Цитата Сообщение от DrOffset Посмотреть сообщение
В векторе так-то (по крайней мере в релизном варианте) их тоже нет
VS когда-то так не считала... Сейчас похоже переделали, чтоб соответствовало стандарту.
Yandex
Объявления
12.07.2014, 10:47     Нужны ли в реальной практике массивы?
Ответ Создать тему
Опции темы

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