Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

STL библиотека С++

3.0K
07 августа 2006 года
Inga
79 / / 27.12.2005
Объясните, пожалуйста, доходчиво :) , почему при работе с контейнером-вектором, можно использовать доступ через индексы как в массиве, а при работе, например с контейнером типа <list> или <multiset> можно использовать только итераторы, а по индексу, доступа нет.
562
07 августа 2006 года
tarekon
175 / / 19.08.2003
Потому что в векторе данные расположены непрерывно, а в списке - разбросаны по памяти. Таким образом, вычислить координаты конкретного элемента в векторе легко по формуле
адрес = адрес_первого_элемента + размер_элемента * номер_элемента
а в списке такого сделать нельзя. Поэтому только в векторе введены индексы - по ним быстрее можно добраться до конкретного элемента. В списке же быстро сделать нельзя - все равно придется перебирать их все по-очереди. Поэтому у них только итераторы.
1.9K
08 августа 2006 года
[*]Frosty
278 / / 17.06.2006
Потому, что это список, а в нем возможен только последовательный доступ(могу на мыло выслать материалы по спискам, массивам, и т.д.)
Хотя впинципе все зависит от реализации. Если бы список был реализован через массив, то тогда бы возможно был бы и произвольный доступ(как в массиве).

З.Ы. Когда отвечал из-за ... рекламы не заметил имеющийся ответ)
3.0K
08 августа 2006 года
Inga
79 / / 27.12.2005
Cпасибо за ответы!
До конца не могу понять в чем прелесть использования списков <list>.

>на мыло выслать материалы по спискам

Если есть такая возможность, мой email: ingachernova[@].yandex.ru
240
08 августа 2006 года
aks
2.5K / / 14.07.2006
[QUOTE=Inga]Cпасибо за ответы!
До конца не могу понять в чем прелесть использования списков <list>.
[/QUOTE]
Как раз в разности подходов к реализации и интерфейсу. Для каких то задач больше подходит список, для каких то массив, или вектор.
Что такое список по определению - это набор элементов, в котором каждый указывает на следующий за ним, ну и на предыдущий если список двусвязный.
Это удобно для задачь, где требуеться такая модель хранения данных. Причем позволяющая удалять любой элемент из середины, конца или начала, а так же вставлять куда угодно без всяких проблемм и затрат. Просто исправляються связи на месте вставления. В векторе же все данные подряд в памяти и просто так вычленить в середине одну ячейку или добавить раздвинув остальные не получится.
15K
09 августа 2006 года
kokorins
1 / / 24.11.2005
А зачем тебе нужны разные названия для объектов которые делают одно и тоже? В Stl как-то решили, что вещи отвечающие разным потребностям должны обладать разной функциональностью.

в stl есть понятие гарантированной скорости выполнения в том числе вставка и поиск по различным контейнерам. Для Vector поиск происходит за константное время (в смысле от кол-ва элементов в нем содержащимся.) Зато вставка требует перераспределения памяти, а если еще и не в конец то это в обще линейное время. С другой стороны в списке(list) вставка по итератору происходит за константное время и не требует перераспределения памяти. Зато поиск происходит дольше.

Читай Страуструпа.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог