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

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

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

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

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

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

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

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

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

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

Векторы - C++
Изучаю сейчас библиотеку vector. #include <vector> int main() { std::vector<int> v(2); // Создаем вектор, состоящий из двух...

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

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

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

Добавлено через 6 минут
Я имею ввиду не резервирование памяти вектором на внутреннем уровне после окончании лимита, а про резервировании программистом, столько памяти, сколько действительно нужно.
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
02.06.2011, 15:50     Массивы и векторы #14
вектор и лист - вроде как для разного надо юзать - это не взаимозаменяемые контейнеры
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 это частный случай, когда известно на какие примерно объёмы расчитан вектор. А в общем случае, если размер вектора не известен примерно и он в результате окажется огромным, то...
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
02.06.2011, 16:03     Массивы и векторы #16
а reserve это частный случай, когда известно на какие примерно объёмы расчитан вектор. А в общем случае, если размер вектора не известен примерно и он в результате окажется огромным, то...
Я говорил именно про reserve. Про остальные случаи я согласен.
C++
1
вектор и лист - вроде как для разного надо юзать - это не взаимозаменяемые контейнеры
Все, что можно сделать с помощью list, можно сделать и с помощью vector (обратное не верно, по крайней мере стандартными средствами).
Только цена вопроса в производительности.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2011, 16:33     Массивы и векторы
Еще ссылки по теме:

Векторы - C++
Добрый день форумчане! обнаружил что вектор можно объявить следующим образом : vector<MyClass *,MyClass2 *> vector_name; ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
02.06.2011, 16:33     Массивы и векторы #17
следуя логике, делаем вывод что вектор более универсален, а следовательно более медлен в конкретном частном случае
Yandex
Объявления
02.06.2011, 16:33     Массивы и векторы
Ответ Создать тему
Опции темы

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