![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Какова разница между Array и List ?
хочу пример ![]() С Array вроде все понятно. А вот List ? Что за структура? |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Я с STL-em мало имел дел.
ИМХО разница во внутреностях. Если Array ето "удобный массив", то List - структура элементов, где каждый элемент указывает на следующий элемент. Примера нет ![]() |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
похоже действительно так.. |
|||
|
||||
S.A.P. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
List - это структура элементов, где каждый элемент указывает на следующий и предыдущий элемент в наборе. Двусвязный список другими словами.
Array - Черт знает что такое. Глядя на методы можно предположить, что односвязный список. Естественно уступает в гибкости перед List, но может оказаться полезен, когда необходимо экономить память на указателях. Это сообщение отредактировал(а) Perchilla - 18.1.2005, 22:27 |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
List - это обычно структура для быстрого добавления/вставки и удаления элементов. Так как она обычно представленна списком, то каждый элемент располагается в памяти независимо от других элементов и может быть добавлен или удален без реформирования всего списка. В то же время отсутсвует random access (свободная адресация к элементам) до элементов можно дойти только обходя весь список. Array - обычно просто массив. Блок памяти непрерывно распологающийся в памяти и поделенный на элементы одинаковой длинны. Из-за этого в массиве очень быстрый доступ к элементам - любой элемент может быть получен через его порядковый номер. Тем не менее удаление элементов, добавление, а тем более вставка связанны с большими затратами. Приходится перевыделять память и копировать элементы. Безусловно, текущие реализации подобных структур оптимизированны чтобы уменьшить их недостатки. Например в массиве выделяется память сразу под несколько элементов (обычно почему-то 10) и при реаллокации памяти, память добавляется тоже сразу кусками на несколько элементов. Это позволяет массиву очень быстро добавлять элементы в конец, так как память уже выделенна, и сократить количество реаллокаций, а как следствие и копирования элементов. Вставка в середину однако же все-равно потребует копирования элементов. Списки тоже улучшают делая, например, комбинацию из списка и массива, где сам список состоит не из элементов, а из массивов элементов. То есть каждый узел списка - это массив из (допустим 10) элементов. В такой список быстрее добавлять элементы в конец и можно реализовать более быстрый доступ к элементам. -------------------- Волны гасят ветер... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |