Шэньчжэнь Tianteng промышленности Лтд
You Are Here:Главная > НОВОСТИ > Содержание
Дистрибьютор - важная часть стандартной библиотеки C ++ в программировании на C ++
Jun 25, 2018

В программировании на С ++ распределитель является важной частью стандартной библиотеки C ++. Библиотека C ++ определяет множество структур данных (таких как связанные списки, коллекции и т. Д.), Которые в совокупности называются «контейнерами». Одной из общих особенностей этих контейнеров является то, что их размеры могут быть изменены во время выполнения; для достижения этой цели особенно важно распределение динамической памяти, в этом диспенсер используется для обработки запросов на размещение и освобождение памяти контейнера. Другими словами, распределитель используется для инкапсуляции низкоуровневых данных управления памятью в контейнерах STL. По умолчанию стандартная библиотека C ++ использует свой собственный универсальный распределитель, но программисты могут также настроить дистрибьютора для его замены в зависимости от потребностей.

Дистрибьютор был впервые изобретен Александром Степненом в составе стандартной библиотеки шаблонов (STL) для C ++. Его первоначальное намерение состояло в том, чтобы создать метод, который «делает библиотеку более гибкой и независимой от базовой модели данных». И позволяет программистам использовать в библиотеке пользовательские указатели и ссылочные типы, но при включении стандартной библиотеки шаблонов в стандарт C ++ , комитет по стандартам C ++ понял, что полная абстракция модели данных приведет к неприемлемой потере производительности. Чтобы сделать компромисс, ограничения на диспенсеры в стандарте стали более строгими, и в связи с этим степень настройки диспенсеров, описанных существующими стандартами, был значительно ограничен по сравнению с оригинальной идеей Стефанова.

Несмотря на то, что настройка дистрибьютора ограничена, во многих случаях по-прежнему необходим пользовательский распределитель, который, как правило, должен инкапсулировать доступ к различным типам пространства памяти (например, разделяемой памяти и вторичной памяти) или повысить производительность при использовании пулов памяти для выделение памяти. В дополнение к этому, с точки зрения использования памяти и времени выполнения, также полезно ввести специально разработанный дистрибьютор для программ, которые часто выполняют небольшой объем выделения памяти.