Интервью вопросы STL стандартной библиотеки (оборотов в минуту)

Во- первых, основной вектор (хранение) механизма
два, механизма вектор самостоятельного роста
трех, список основной механизм (хранение) В-
четвертых, при каких условиях вектор, со списком , при каких обстоятельствах
пять, список приходит Сортировка функционировать принцип
VI. Deque основных механизмов
семь различий деки и вектора из
восьми, сопоставьте основной механизм и искать сложности, может пройти боковой край вставку
девять, вектор вставки и удаление списка Какой разницы
десять, хеш , как избежать конфликтов адресов
одиннадцать, хеш, hash_set разница hash_map из
двенадцати, разница hash_map между картой, и когда использовать их обоих?
Тринадцать, красно-черное дерево , что природа?
Четырнадцать, три проблемы , карта и набор
пяти, поэтому операция вектор итератора вставки может привести к выходу из строя
шестнадцать, и разницы Hashtable HashMap
семнадцать, STL , лежащие в основе структуры данных , чтобы достичь
восемнадцать, STL , которые обеспечивают шесть компонентов?
Девятнадцать, auto_ptr может сделать векторные элементы этого? Почему?
XX, кратко о next_permutation и реализации раздела?
XXI не позволяет поведение обхода контейнера Что? (Не предоставляют итераторов)

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

Во- вторых, так как механизм роста вектора ,
  когда пространство было выделено , когда данные не загружен, удвоить текущую емкость выделенной области памяти, текущее значение копируется во вновь выделенную память и освобождает оригинал памяти.
  Для любой операции вектора, как только причина реконфигурация пространства, все указывающие к исходному вектору итератору истекал.

Три, лежащий в основе перечислить (хранится) механизм
  для хранения данных в единицах узлов, адрес узла не обязательно непрерывен в памяти, каждая вставка или удалить элемент, размещенный на элементе выпуска или пространстве.

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

Пять, список сортировки принцип приходит функция сортировки
  будет первые два элемента в сочетании, а затем после того, как эти два элемента объединяются, а затем объединить эти 2 подпоследовательности стали четыре подпоследовательности последовательности элементов, процесс повторяется, чтобы дать 8, 16 ,,,, последовательность, полученная последовательность сортируется.
Временная сложность O (журнал N)

В- шестых, механизм , лежащий в основе дека
  Deque динамически комбинации кусочно - непрерывного пространства, готова добавить новое непрерывное пространство и связывая вместе создают пространство , отведенное функцию.
Примечание: Если необходимо, мы решили использовать вектор , а не Deque насколько возможно , потому DEQUE итераторов гораздо сложнее , чем векторные итераторы. Дуке рода, в целях повышения эффективности, первый вектор для репликации рода дека, а затем копируются в дек.
Deque использует карту (не отображать STL контейнеры) в качестве ведущего, который является небольшим непрерывное пространство, в котором каждый элемент является указателем на другой секции больше непрерывного пространства (буфер).
Deque итератор содержит четыре содержания:
 1 . ) CUR: итератор , указывающий элемент

 2) первый: первый буфер называют этот итератор.

 3) в прошлом: конец буфера.

 4) узел: управления направленностью центр.

Семь, Deque и разность векторов
1.vector пространство представляет собой непрерывные линейное отверстие в одну стороны, Deque пространства является непрерывной нитью открытия двухстороннего.
2.deque не обеспечивает пространство , зарезервированная функцию, вектор должен будет обеспечить пространство , зарезервированное функцию.
3.deque также обеспечивают случайные итераторы доступа, но это намного сложнее , чем вектор итератора

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

Девять вектор вставки и удаление список Какой разницы
  вставки вектора и удаление данных необходимо скопировать , чтобы переместить существующие данные, если векторные объекты , хранящиеся в крупном или сложном конструктору, слишком много накладных расходов, если простые мало данных, выше эффективность в списке
Список вставки и удаления данных, существующие данные нужно пройти, но вы хотите , чтобы вставить данные в заголовке, высокая эффективность.

Десять, Хеш , как избежать конфликтов адресов
1. Линейный датчик: хэш - функция вычисляет положение вставки элемента, если пространство уже занято эту позицию, а затем продолжать смотреть вниз до тех пор , пока не найдет свободное место до сих пор.
2. Вторичные обнаружения: если вычисленное положение занимает, то последовательно пытаются Н + 1 ^ 2, Н + 2 ^ 2 , и т.д.
3. открытой цепью: Каждая таблица содержит список элементов, вставляется в списке выполнения, удалить

Одиннадцать, Хеш, hash_set, hash_map различие
  hash_set Хеш , как донизу, не имея никакой функции сортировки, можно быстро найти , что значение является реальным значением. (Установите в виде красно-черного дерева на дно, имея функцию сортировки)
  hash_map Hashtable как дно, нет автоматической сортировки можно быстро найти, каждый элемент также имеет реальное значение и ключ. (Карта в виде красно-черного дерева на дно с функцией сортировки)

XII разница hash_map и карта, и когда использовать их обоих?
Конструктор: hash_map требуется хэш - функции и функции , равную, необходимость сравнить функции карты (или меньшего размера)
структура хранения: hash_map Хеш как нижний слой и основной карте до красно-черного дерева.
  В общем, hash_map быстрее скорости поиска , чем карта, но и найти базовую скорость , независимо от величины и количества данных , относящихся к постоянному уровню. Карта Скорость поиска уровня LogN. Но это не обязательно постоянное меньше бревно, но и хэш - функция hash_map времени.
Учитывая эффективность, особенно когда элемент достигает определенной величины, с hash_map ,
когда меньше памяти, или количество элементов , считается, с картой

  карта выбора или hash_map, ключ смотреть на количество раз ключевое слово операции запроса, и вам необходимо убедиться, что общее время время запроса или один запрос. Много раз, если она хочет работать, требует его общей эффективности, использование hash_map, среднее время обработки коротко. Если операция в несколько раз, может привести к неопределенности hash_map использования O (N), то среднее время обработки относительно медленно, время обработки одного постоянное отображение, внимание должно быть выше, чем в общей стабильности общей эффективности, поскольку в помещении меньшее количество операций. Если процесс с помощью небольшого числа операций для получения hash_map худшем случае O (N), то hash_map преимущества, таким образом разрушено.

Тринадцать, красно-черное дерево , что природа?
1. Каждый узел имеет красный цвет или черный
2. черный корень
3. черный листовой узел узла NULL.
4. Если узел является красным, черным и его дочерними узлы должны быть
любым узлом к любому пути 5. NULL, и должны иметь то же число узлов , содержащиеся в черном

Четырнадцать, три вопроса и установить карту
1. Почему вставку и эффективность удаления карты и установить выше , чем другие последовательности ,
  потому что никакое копирования памяти и двигая
после 2. Почему карта и установить каждую вставку, предварительно сохраненный итератор не подведет?
  Так как только узел операции указатель вставки в обмен на не происходит, никаких изменений в памяти узла, как указатель на узел итератора, память не изменилась, указатель на память не увеличивается.
3. Когда увеличивается , когда элементы данных (от Dao 10000 20000), карта, установите скорость будет найти как изменить?
  Красно-черное дерево способ двоичного поиска, сложность времени LogN, так что число выборок из log100000 = 14 становится log20000 = 15, множество только раз.

В- пятых, почему операция вектора итератор вставки может привести к сбою
  при динамически увеличивать размер вектора, не добавляя новое пространство в исходном пространстве, но в два раза от исходного размера в другой конфигурации нового, большего пространства, а затем скопировать содержимое более, и высвобождение исходного пространства, из - за изменения в операционной комнате, так что неудачи итераторов.
После того, как теория потерпит неудачу, теоретически, вставить или удалить, все итераторы пересчитаны, это можно рассматривать как провал, в принципе, что они не могут использовать просроченную память.
Тем не менее, основной вектор представляет собой массив как правило , выполнены, тщательного рассмотрения характеристик массива, пришел к выводу:
Когда 1.Вставьте, положение вставки предполагается , р, делится на два случая:
  А) контейнер есть пустое пространство, а не перераспределять память, P перед тем итераторы действительных после отказа р.
  б) тяжелая суб-память, после того , как р итератора терпит неудачу ,
когда 2.erase, стереть положение предполагается , р, р итератора , прежде чем действительны, и следующий элемент р в месте (если до хвоста р, то р точка к инвалидному хвостовому концу), после того, как итератор р малоэффективны.

Шестнадцать, Хеш и HashMap разница между
HashMap хэш - таблицу, чтобы лежащий в основе. Со следующими отличиями:
1.hashtable Словарь является подклассом класса является реализация HashMap Карты интерфейс
методом 2.hashtable синхронизируется, и этот метод не синхронизирован HashMap

Семнадцать, то СТЛ , лежащие в основе структура данных реализованы
1.vector: массив, быстрый доступ к случайной поддержка
2: список дважды связанный список, поддержка быстрых делеций
3.deque: центральный контроллер и множество буферов, чтобы поддерживать конец к концу (не промежуточное соединение) быстро делеция, поддержка произвольного доступа
4.stack: Список или Deque нижележащей реализации, причина в том , что никакого расширения не имеет вектора
5: дека или список очереди , реализованный основной причине , что вектор расширения , не потребляя
6: priority_queue: вектор , как правило , в нижней части контейнера , управление кучей для правила обработок реализовано лежащим в основе контейнера
7: набор заказал красно-черное дерево не повторяется
8: мультимножества красно-черного дерево заказало, повторяемая
9: Карта заказала красно-черное дерево, не будет повторяться
10: multimpap с красно-черным деревом последовательность может быть повторена
11: hash_set хэш - таблица расстройство не повторять
12: hash_map хэш - таблица, расстройство не повторять
13: хеш базовой структуры вектора

Восемнадцать, STL , которые обеспечивают шесть компонентов?
1. Контейнер
  представляет собой разновидность структуры данных
  контейнеров последовательности: массив, вектор, куча, priority_queue , список, SLIST, Deque, стек, очередь ,
  связанные контейнеры: набор, карта, мультимножество, MultiMap , Хеш, hash_set, hash_map, hash_multiset, hash_multimap
2. алгоритмы
  различных общих алгоритмов: сортировка, поиск, копирование, удаление и т.д., стоит учиться там, сортировать, next_permutation, раздел, объединение сортировки и т.д.
3. итератора
  игра клей между контейнером и алгоритмом, так называемый «пан типа указатель ". Есть пять типов, с точки зрения реализации, итератор является своим родом оператор *, оператор -. Чтобы перегрузить шаблон класса>, оператор ++, оператор - и другие связанные с ними операциями указатель всех STL контейнеров и больше приходят со своим собственным выделенным итератором , Только контейнерные дизайнеры знают , как проектировать итератор, Primal указатель также итератор. Это режим дизайна.
4. Функтора
  функция поведения класса, алгоритм может быть использована в качестве стратегии, с точки зрения реализации, это функтор перегруженный оператор () шаблона класса или класса. Указатель функции можно рассматривать как правило , узким функтор.
Адаптер
  Способ модификации контейнера или что - то функтор или интерфейс итератора. Так , например, очереди и стека, выглядел как контейнер, на самом деле дека пакет слой кожи.
6. конфигуратор
  Копирование конфигурации пространства и управления, с точки зрения реализации, конфигуратор для достижения динамического распределения пространства, управления пространством, пространство освобожденного classtemplate.

Девятнадцать, auto_ptr может сделать векторные элементы этого? Почему?
  Не могу. стандартные контейнеры STL , поскольку она содержит заранее определенные элементы могут быть скопированы должны быть сконструированы и могут быть переданы назначены. Но не auto_ptr, shared_ptr может быть использован вместо умных указателей.

XX, кратко о next_permutation и реализации раздела?
1.next_permutation (следующая перестановка) Во-
  первых, начинают с заднего конца вперед ищет двух соседних элементов, так что первый элемент I, второй элемент I, и удовлетворяют я <I, найти такой набор фазы после того, как соседа, а затем начинает вперед от конца тестирования, найти первый элемент я больше J, I и J будет отменено, то после того, как все элементы II обратного порядка, а именно, запрос «следующий» перестановок ,
2.partion:
  Заказать Головное первый итератор перемещается в хвост, хвост итератора перемещается в голову в последнюю очередь . Когда значение больше или равно первый поворот , упомянутого остановился, когда значение меньше или равно последний называют также остановились поворот, а затем проверить , является ли перемежается два итератора. Если первый еще остался в прошлом, он будет прикреплен взаимозаменяемыми элементы, а затем настроить каждую позицию (приближающийся центр), а затем продолжить с тем же поведением. Если вы обнаружили два итератора , называемых неправильно, он представляет всю последовательность имеет завершение настройки.

XXI не позволяет поведение обхода контейнера Что? (Нет итераторы)
1.queue, кроме головы, нет никаких других элементов других способов доступа к Deque.
2.stack (внизу , чтобы достичь Deque), в дополнение к вершине, нет никакого способа , чтобы получить доступ к другим элементам стека.
3.heap, все элементы должны следовать особому правилу упорядочения, не обеспечивают функцию обхода.

Печатается 

рекомендация

отwww.cnblogs.com/havain/p/11109167.html