|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.01.2011, 15:28 | #1 |
Регистрация: 21.08.2010
Сообщений: 7
|
Как работает вектор?
Вопрос в том, массив это или список? То есть, если это массив, то как работает push_back за О(1)? А если это список, то получается, что у вектора нету произвольного доступа, то есть v[100] должен работать за 100*С(с=const) операций(а v[10000] за 10000*С). Так что же такое вектор?
|
31.01.2011, 15:49 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
массив это. т.е все элементы располагаются в одном непрерывном блоке памяти. если блока не хватает, память перераспределяется. работает он не за O(1), а точнее за амортизированное O(1). при вставке N элементов на самом деле выделяется память для 2*N элементов, чтобы постоянно не вызывать realloc при добавлении новых элементов. иначе время было бы O(n).
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
31.01.2011, 16:41 | #3 |
Регистрация: 21.08.2010
Сообщений: 7
|
то есть вектор занимает в 2 раза больше памяти, чем массив "такого же размер"?
|
31.01.2011, 17:08 | #4 |
пыжашийся нуб
Пользователь
Регистрация: 19.06.2010
Сообщений: 93
|
Код:
|
31.01.2011, 17:38 | #5 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Реализация может быть разной. Но всегда память непрерывна.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
31.01.2011, 17:58 | #6 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
ну вообще я читал в офф стл доке, что увеличение вектора при нехватке памяти всегда квадратичное. в студийном компиляторе оно по всей видимости логарифмичное
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
31.01.2011, 18:13 | #7 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
У меня в системе тоже квадратичное. Но стандартом не установлено.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
умножение матрицы на вектор на Delphi (неверно работает) | adm2010 | Помощь студентам | 1 | 29.01.2011 01:43 |
вектор как закрытый член класса, как изменять его значения? | Zhigool' | Общие вопросы C/C++ | 3 | 08.08.2010 23:19 |
Как объявить глобальный/публичный вектор | huzik | Общие вопросы C/C++ | 1 | 13.11.2009 23:02 |
Как работает?! | KamBall | Общие вопросы C/C++ | 2 | 01.06.2009 19:23 |
Объясните пожалуйста как можно считать значения в этом файле в вектор, 4 -ую матрицу, 6-ую матрицу | ciaonataha | Помощь студентам | 1 | 30.03.2009 20:57 |