ПредишенСледващото

Този раздел е документацията за Visual C ++ например като счупени съдове, използвани в стандартната библиотека на C ++. За повече информация, вижте. Раздел STL контейнери.

Той описва елементи последователност за контрол на обект, обикновено тип Тай ​​променлива дължина. Последователността се съхранява по различни начини в зависимост от действителното контейнера.

Може да бъде дизайнер на контейнера или функцията член, обадете се на строителя в редки случаи Тай (Конст Тай ) Или функция Тай :: оператор = (Конст Тай ). Ако настоящата покана генерира изключение, обект контейнер е длъжен да поддържа целостта и пресъздадете никакво изключение, тя прихваща. Тя е безопасно да се замени, да назначава, премахване или унищожи обекта контейнер, след като тя създава едно от тези изключения. Като цяло, обаче, не е възможно по друг начин да се предскаже състояние последователност контролира контейнер обект.

Няколко допълнителни предупреждения:

Тай е създал изключение, в резултат на състоянието на обекта на контейнера не е определена.

Ако контейнерът, който съхранява дистрибутор обект Ал. и др е изключение, е различно от в резултат на повикване al.allocate. контейнер обект Получената състояние е неопределена.

Ако обектът магазините контейнерни комп функция. за да се определи как да се организира контролирана последователност и изходи COMP изключват всякакъв вид контейнер обект в резултат състояние е неопределено.

класове контейнери определени STL удовлетворяват няколко допълнителни изисквания, както е описано в следващите параграфи.

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

За всички класове на контейнери, определени от STL, ако по изключение, когато се обаждате на следните функции на потребителя:

функция държава, за да изтриете изключение само в случаите, когато операцията по копиране (присвояване или строителство копие) хвърля изключение.

Освен изключение не се случва, ако копирате итератора върната от функцията за член.

замести член функция осигурява допълнителни предимства определят всички класове STL контейнери:

Държавите функция само ако контейнерът съдържа Ал дистрибутор обект, изключение е хвърлен и Ал извиква изключение при копирането.

Референтни обозначения и итератори обозначаващи елементи контролирани последователност на промяна остават валидни.

контейнер обект клас определени STL Разпределя и пресата за съхранение на последователността, оперира през съхранява тип обект Alloc. което обикновено е параметър шаблон. Такава дистрибутор обект трябва да има същия външен интерфейс като дистрибутор на обект клас . По-специално Alloc трябва да е от същия тип като Alloc :: свържете повторно . друг

За всички класове на контейнерни определени STL, член функция get_allocator Alloc на константи; връща копие на съхранявания разпределител обекта. Имайте предвид, че съхранява разпределител обектът не бъде копиран, когато обектът на контейнера е назначена. Всички дизайнери представят инициализация стойност, съхранявана в дистрибутора. в Alloc Ако параметърът конструктор не съдържа дистрибутор.

Според C ++ стандартен контейнер клас дефинирани STL може да се предположи, че:

Всички обекти от сравнения клас АПос равенство.

Въведете Alloc :: const_pointer съвпада Конст Тай *.

Въведете Alloc :: const_reference съвпада Конст Тай ,

Въпреки това, в тази реализация на контейнерите не правят такива опростяващи допускания. Така че те работят правилно с дистрибутора на обектите, които са по-значими:

Всички обекти от клас Alloc не е нужно да сравнявате равни. (Няколко медийни басейни Можете да поддържат).

Въведете Alloc :: const_pointer не трябва да съвпада с CONST Тай *. (Constant указател може да бъде клас).

Въведете Alloc :: показалка не трябва да съвпада с Тай *. (Може да бъде указател клас).

Свързани статии

Подкрепете проекта - споделете линка, благодаря!