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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Nequti
246 / 51 / 1
Регистрация: 21.05.2011
Сообщений: 297
#1

Массивы и векторы - C++

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

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

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

Одномерные массивы (векторы) - C++
помогите мне не остаться на летний семестр! Одномерные массивы (векторы) 3. Дан одномерный массив, состоящий из N вещественных...

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

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

Векторы - C++
Здравствуйте. Использую векторы типа vector<string> sentence;. Описываю их в классе в private объявляю vector<string> sentence;/ В public...

Векторы - C++
Определите полусумму длин двух векторов А(1,5; 2,5; -0,3) и В(-11,7; -9,3; 2,5; 3,7; -1,2). Вычислите, длины вектора оформив в виде функции.

16
co6ak
Кошковед
409 / 502 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
02.06.2011, 14:24 #2
что лучше, камаз или велосипед?
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
02.06.2011, 14:26 #3
Векторы удобнее. И по скорости проигрывают на доли процента, если правильно скомпилировать.
1
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
02.06.2011, 14:27 #4
массив - если число элементов заранее известно. vector - соответсвенно, если не известно. А если планируется часто удалять и добавлять элементы в середину, то лист
0
Nequti
246 / 51 / 1
Регистрация: 21.05.2011
Сообщений: 297
02.06.2011, 14:30  [ТС] #5
Спасибо
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
02.06.2011, 14:32 #6
Цитата Сообщение от pito211 Посмотреть сообщение
массив - если число элементов заранее известно. vector - соответсвенно, если не известно
Интересненько.

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

Добавлено через 6 минут
Я имею ввиду не резервирование памяти вектором на внутреннем уровне после окончании лимита, а про резервировании программистом, столько памяти, сколько действительно нужно.
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
02.06.2011, 15:50 #14
вектор и лист - вроде как для разного надо юзать - это не взаимозаменяемые контейнеры
0
pito211
186 / 173 / 8
Регистрация: 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
02.06.2011, 15:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2011, 15:55
Привет! Вот еще темы с ответами:

Векторы - C++
Доброго времени суток! Очень нужна помощь в двух задачах. Заранее спасибо! 1. Дан целочисленный вектор С(6). Найти сумму тех его...

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

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

векторы - C++
скажите в чём разница между функциями setvect и getvect??


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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