1 added
1 removed
Original
2026-01-01
Modified
2026-03-10
1
-
<p>В стандартной библиотеке C++ для управления наборами объектов существуют<strong>контейнеры</strong>. Таким образом, можно сказать, что<strong>контейнер</strong>-- это ��оллекция объектов определенного типа. Если же мы говорим о последовательном контейнере (sequential container), то он дает возможность контролировать порядок, в котором существующие элементы располагаются в коллекции, причем не только контролировать, но и управлять доступом к данным элементам.</p>
1
+
<p>В стандартной библиотеке C++ для управления наборами объектов существуют<strong>контейнеры</strong>. Таким образом, можно сказать, что<strong>контейнер</strong>-- это коллекция объектов определенного типа. Если ��е мы говорим о последовательном контейнере (sequential container), то он дает возможность контролировать порядок, в котором существующие элементы располагаются в коллекции, причем не только контролировать, но и управлять доступом к данным элементам.</p>
2
<h4>Рассмотрим типы последовательных контейнеров:</h4>
2
<h4>Рассмотрим типы последовательных контейнеров:</h4>
3
<ol><li><strong>vector</strong>. Это массив переменного размера, поддерживающий произвольный доступ к любому элементу контейнера. Существует возможность добавлять и удалять элементы из любого места контейнера.</li>
3
<ol><li><strong>vector</strong>. Это массив переменного размера, поддерживающий произвольный доступ к любому элементу контейнера. Существует возможность добавлять и удалять элементы из любого места контейнера.</li>
4
<li><strong>deque</strong>. Представляет собой двустороннюю очередь, поддерживает доступ к любому элементу контейнера. Существует возможность добавлять и удалять элементы в начале и конце.</li>
4
<li><strong>deque</strong>. Представляет собой двустороннюю очередь, поддерживает доступ к любому элементу контейнера. Существует возможность добавлять и удалять элементы в начале и конце.</li>
5
<li><strong>list</strong>. Это двусвязный список, который поддерживает лишь последовательный 2-направленный доступ к элементам. Можно добавлять и удалять элементы в начале и конце контейнера.</li>
5
<li><strong>list</strong>. Это двусвязный список, который поддерживает лишь последовательный 2-направленный доступ к элементам. Можно добавлять и удалять элементы в начале и конце контейнера.</li>
6
<li><strong>forward_list</strong>. Представляет собой односвязный список, который поддерживает лишь последовательный однонаправленный доступ к элементам контейнера. Удалять элементы можно в начале и конце.</li>
6
<li><strong>forward_list</strong>. Представляет собой односвязный список, который поддерживает лишь последовательный однонаправленный доступ к элементам контейнера. Удалять элементы можно в начале и конце.</li>
7
<li><strong>array</strong>. Это уже массив фиксированного размера, поддерживающий произвольный доступ фактически к любому элементу контейнера, однако в данном случае удалять/добавлять элементы нельзя.</li>
7
<li><strong>array</strong>. Это уже массив фиксированного размера, поддерживающий произвольный доступ фактически к любому элементу контейнера, однако в данном случае удалять/добавлять элементы нельзя.</li>
8
<li><strong>string</strong>. Этот контейнер аналогичен вектору, состоящему из символов, то есть речь идет о строке.</li>
8
<li><strong>string</strong>. Этот контейнер аналогичен вектору, состоящему из символов, то есть речь идет о строке.</li>
9
</ol><p>Итак, стандартная библиотека C++ по дефолту включает в себя ряд контейнеров, представляющих определенные структуры данных. При этом все они имеют и общие, и специфические возможности. Также кроме класса<strong>array</strong>они все поддерживают добавление/удаление элементов. Главное отличие лишь в том, каким образом это добавление/удаление обеспечивается, а также как происходит доступ к существующим элементам. Соответственно, контейнер подбирается с учетом конкретной ситуации и потребностей.</p>
9
</ol><p>Итак, стандартная библиотека C++ по дефолту включает в себя ряд контейнеров, представляющих определенные структуры данных. При этом все они имеют и общие, и специфические возможности. Также кроме класса<strong>array</strong>они все поддерживают добавление/удаление элементов. Главное отличие лишь в том, каким образом это добавление/удаление обеспечивается, а также как происходит доступ к существующим элементам. Соответственно, контейнер подбирается с учетом конкретной ситуации и потребностей.</p>
10
<p>Чтобы воспользоваться каким-нибудь контейнером, необходимо добавить в программу соответствующий заголовочный файл, который принято называть именем класса контейнера.</p>
10
<p>Чтобы воспользоваться каким-нибудь контейнером, необходимо добавить в программу соответствующий заголовочный файл, который принято называть именем класса контейнера.</p>
11
<p>Также в момент определения переменной контейнера надо установить ограничение на тип элементов, которые будут в этот контейнер включены. Тип элементов следует передавать в угловых скобках. Ниже пример с определением переменной класса<strong>vector</strong>, которая сохраняет числовые данные int-типа:</p>
11
<p>Также в момент определения переменной контейнера надо установить ограничение на тип элементов, которые будут в этот контейнер включены. Тип элементов следует передавать в угловых скобках. Ниже пример с определением переменной класса<strong>vector</strong>, которая сохраняет числовые данные int-типа:</p>
12
<p>Остается добавить, что в случае компиляции программы, использующей контейнеры, посредством компилятора g++, может возникнуть необходимость в указании флага<strong>-static</strong>:</p>
12
<p>Остается добавить, что в случае компиляции программы, использующей контейнеры, посредством компилятора g++, может возникнуть необходимость в указании флага<strong>-static</strong>:</p>
13
<p><em>По материалам<a>https://metanit.com/</a>.</em></p>
13
<p><em>По материалам<a>https://metanit.com/</a>.</em></p>
14
14