Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
247 / 52 / 1
Регистрация: 21.05.2011
Сообщений: 297
1

Массивы и векторы

02.06.2011, 14:23. Показов 2170. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос по теме . Что лучше использовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2011, 14:23
Ответы с готовыми решениями:

Массивы векторы
Здравствуйте,недавно начал изучать c++.Разобрался с циклами,списками,указателями и недавно научился...

Одномерные массивы (векторы)
помогите мне не остаться на летний семестр! Одномерные массивы (векторы) 3. Дан одномерный...

Динамические массивы\Векторы. Операторы работы с ними
Здравствуйте, написал программу, но в ошибках выдаёт все операции, связаные с вектором. Библиотека...

Одномерные массивы (векторы): вычислить и напечатать значения функции Y= Ak2 + Ak - sin Ak, где элементы массива А вводятся с клавиатуры
Вычислить и напечатать значения функции Y= Ak2 + Ak - sin Ak где элементы массива А вводятся с...

16
Кошковед
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
02.06.2011, 14:24 2
что лучше, камаз или велосипед?
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
02.06.2011, 14:26 3
Векторы удобнее. И по скорости проигрывают на доли процента, если правильно скомпилировать.
1
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
02.06.2011, 14:27 4
массив - если число элементов заранее известно. vector - соответсвенно, если не известно. А если планируется часто удалять и добавлять элементы в середину, то лист
0
247 / 52 / 1
Регистрация: 21.05.2011
Сообщений: 297
02.06.2011, 14:30  [ТС] 5
Спасибо
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
02.06.2011, 14:32 6
Цитата Сообщение от pito211 Посмотреть сообщение
массив - если число элементов заранее известно. vector - соответсвенно, если не известно
Интересненько.

Цитата Сообщение от pito211 Посмотреть сообщение
А если планируется часто удалять и добавлять элементы в середину, то лист
А если в конец или в начало?
0
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
02.06.2011, 14:52 7
Цитата Сообщение от gooseim Посмотреть сообщение
А если в конец или в начало?
так же как и в середину(лист быстрее). Хотя при добавлении в конец примерно равны, кроме тех случаев когда size == capacity у вектора
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
02.06.2011, 14:59 8
Цитата Сообщение от pito211 Посмотреть сообщение
Хотя при добавлении в конец примерно равны, кроме тех случаев когда size == capacity у вектора
Если память под вектор зарезервирована, при добавлении в конец вектор будет быстрее. В остальных случаях список предпочтительней.
0
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
02.06.2011, 15:10 9
Цитата Сообщение от gooseim Посмотреть сообщение
Если память под вектор зарезервирована, при добавлении в конец вектор будет быстрее
при очень больших размерах вектор проиграет и при добавлении в конец.
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
02.06.2011, 15:15 10
Цитата Сообщение от pito211 Посмотреть сообщение
при очень больших размерах вектор проиграет и при добавлении в конец.
Почему?
0
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
02.06.2011, 15:34 11
Цитата Сообщение от gooseim Посмотреть сообщение
Почему?
Рано или поздно копирование станет очень накладным делом и перебьёт тот профит, который был получен вначале. Вопрос лишь в объёме данных.
0
247 / 52 / 1
Регистрация: 21.05.2011
Сообщений: 297
02.06.2011, 15:34  [ТС] 12
Плиз, пишите друг другу в личку , спс за понимание.
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
02.06.2011, 15:45 13
Цитата Сообщение от pito211 Посмотреть сообщение
Рано или поздно копирование станет очень накладным делом и перебьёт тот профит, который был получен вначале. Вопрос лишь в объёме данных.
О каком копировании вы говорите? Не совсем вас понимаю.
При резервировании памяти вектора (reserve) и последующим добавлении нового элемента в конец происходит просто присвоение. В случае же со списком в любом случае происходит выделении памяти при каждом новом добавлении.

Добавлено через 6 минут
Я имею ввиду не резервирование памяти вектором на внутреннем уровне после окончании лимита, а про резервировании программистом, столько памяти, сколько действительно нужно.
0
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
02.06.2011, 15:50 14
вектор и лист - вроде как для разного надо юзать - это не взаимозаменяемые контейнеры
0
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
02.06.2011, 15:55 15
Internally, vectors -like all containers- have a size, which represents the amount of elements contained in the vector. But vectors, also have a capacity, which determines the amount of storage space they have allocated, and which can be either equal or greater than the actual size. The extra amount of storage allocated is not used, but is reserved for the vector to be used in the case it grows. This way, the vector does not have to reallocate storage on each occasion it grows, but only when this extra space is exhausted and a new element is inserted (which should only happen in logarithmic frequence in relation with its size).
это про то что я говорил. Если size==capacity, происходит, цитирую reallocation. Что это такое?
Reallocations may be a costly operation in terms of performance, since they generally involve the entire storage space used by the vector to be copied to a new location
то есть вектор берёт и целиком переносит свою бренную тушку в другой участок памяти и подчищает старый в случае size==capacity

а reserve это частный случай, когда известно на какие примерно объёмы расчитан вектор. А в общем случае, если размер вектора не известен примерно и он в результате окажется огромным, то...
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
02.06.2011, 16:03 16
а reserve это частный случай, когда известно на какие примерно объёмы расчитан вектор. А в общем случае, если размер вектора не известен примерно и он в результате окажется огромным, то...
Я говорил именно про reserve. Про остальные случаи я согласен.
C++
1
вектор и лист - вроде как для разного надо юзать - это не взаимозаменяемые контейнеры
Все, что можно сделать с помощью list, можно сделать и с помощью vector (обратное не верно, по крайней мере стандартными средствами).
Только цена вопроса в производительности.
0
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
02.06.2011, 16:33 17
следуя логике, делаем вывод что вектор более универсален, а следовательно более медлен в конкретном частном случае
0
02.06.2011, 16:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2011, 16:33
Помогаю со студенческими работами здесь

Что лучше: динамические массивы, векторы, списки, map контейнеры или что-то ещё?
Привет всем! Помогите правильно алгоритм выбрать. Надо получать из файлов (около 8000 файлов)...

Векторы
Создаю вектор vector<vector<Point>> contours; После чего мне нужно создать аналогичный простой...

Векторы
Имеется структура "Магазины", где в качестве полей есть: Название, Город, Средняя зарплата...

Векторы
Изучаю сейчас библиотеку vector. #include <vector> int main() { std::vector<int> v(2); //...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru