Sdílet prostřednictvím


set – třída

Nastavení třídy kontejneru STL slouží k ukládání a načítání dat z kolekce, ve které jsou obsaženy jedinečné hodnoty prvků a slouží jako klíčové hodnoty, podle kterých jsou data automaticky uspořádávána.Hodnotu prvku v sadě nelze změnit přímo.Místo toho musíte odstranit staré hodnoty a vložit prvky s novými hodnotami.

template <
    class Key, 
    class Traits=less<Key>, 
    class Allocator=allocator<Key> 
>
class set

Parametry

  • Key
    Typ dat prvku, který bude uložen do sady.

  • Traits
    Typ poskytující objekt funkce, který může porovnat dvě hodnoty prvků pro určení jejich relativního pořadí v sadě.Tento argument je nepovinný a binární predikát less <Key> je výchozí hodnota.

  • Allocator
    Typ představující uložený objekt alokátoru, který zapouzdřuje informace o přidělování a navrácení paměti zpět sady.Tento argument je nepovinný a výchozí hodnotou je allocator*<Key>.*

Poznámky

Sada STL je:

  • Asociativní kontejner, což je kontejner proměnné velikosti, který podporuje efektivní načtení hodnoty prvku založené na přiřazené hodnotě klíče.Dále je to jednoduchý asociativní kontejner, protože jeho hodnoty prvku jsou jeho hodnoty klíče.

  • Oboustranný, protože poskytuje obousměrný iterátor pro přístup k jeho prvkům.

  • Seřazený, protože jeho prvky jsou řazeny podle hodnot klíče v kontejneru podle zadané porovnávací funkce.

  • Jedinečný v tom smyslu, že každý z jeho prvků musí mít jedinečný klíč.Vzhledem k tomu, že je sada také jednoduchý asociativní kontejner, jeho prvky jsou také jedinečné.

Sada je také popisována jako třída šablony, protože poskytuje obecné funkce a to nezávisle na určitém typu dat obsažených jako prvky.Datový typ, který má být použit, je místo toho zadán jako parametr v šabloně třídy společně s funkcí porovnání a alokátorem.

Volba typu kontejneru by měla obecně vycházet z typu vyhledávání a vkládání vyžadovaného aplikací.Asociativní kontejnery jsou optimalizovány pro operace vyhledávání, vkládání a odstranění.Členské funkce, které explicitně podporují tyto operace, jsou efektivní a jsou prováděny v čase, který je průměrně úměrný logaritmu počtu prvků v kontejneru.Vkládání prvků nezruší platnost žádných iterátorů a odstranění prvků zruší platnost pouze těch iterátorů, které výslovně odkazovaly na odstraněné prvky.

Objekt sady (set) by měl být asociativní kontejner dle výběru, kdy jsou podmínky přiřazení hodnot k jejich klíčům splněny aplikací.Prvky sady jsou jedinečné a slouží jako vlastní klíče řazení.Model pro tento typ struktury je uspořádaný seznam slov, v němž se slova mohou vyskytovat pouze jednou.Pokud bylo povoleno více výskytů jednoho slova, je objekt multiset odpovídající strukturou kontejneru.Pokud hodnoty musí být připojeny k seznamu jedinečných klíčových slov, objekt map by byl vhodnou strukturou, který by měla tato data obsahovat.Pokud však klíče nejsou jedinečné, byl by zvoleným kontejnerem multimap.

Třída set seřadí sekvence pomocí volání uloženého objektu funkce typu key_compare.Tento uložený objekt je funkce porovnání, ke které lze získat přístup pomocí členské funkce key_comp.Obecně, tyto prvky musí být menší než srovnatelné pro toto pořadí, což znamená, že když jsou uvedeny dva prvky, může být stanoveno, zda jsou ekvivalentní (v tom smyslu, že ani jeden není menší než ten druhý), nebo že jeden je menší než druhý.To má za výsledek řazení mezi neekvivalentními prvky.Technicky je funkce porovnání binárním predikátem, který indukuje přísné slabé řazení, standardním matematickým způsobem.Binární predikát f(x,y) je objekt funkce, který má dva objekty argumentu x a y a návratovou hodnotu true nebo false.Seřazení určené na objektu set je přísné slabé seřazení, pokud je binární predikát nereflexivní, antisymetrický a tranzitivní a je-li ekvivalence tranzitivní, kde jsou dva objekty x a y definovány jako ekvivalentní, když mají predikáty f(x,y) i f(y,x) hodnotu false.Pokud silnější podmínka rovnosti mezi klíči nahradí ekvivalenci, stane se pořadí celkovým (v tom smyslu, že všechny prvky jsou uspořádány ve vztahu k sobě navzájem) a odpovídající klíče budou od sebe nerozeznatelné.

Iterátor poskytovaný třídou set je obousměrný iterátor, ale členské funkce třídy insert a set mají verze, které jako parametry šablony berou slabší vstupní iterátor, jehož požadavky na funkce jsou minimálnější než ty, které jsou zaručeny třídou obousměrných iterátorů.Různé koncepty iterátorů tvoří rodinu týkající se upřesnění jejich funkčnosti.Každý koncept iterátoru má vlastní sadu požadavků a algoritmy, které s nimi pracují, musí omezit jejich předpoklady na požadavky podle typu iterátoru.Lze předpokládat, že ke vstupnímu iterátoru lze přistoupit přes ukazatel pro odkazování na některý objekt a že může být zvýšen na další iterátor v pořadí.Toto je minimální sada funkcí, ale je dostatečná pro srozumitelnou komunikaci o rozsahu u iterátorů [First, Last) v rámci členských funkcí třídy.

Konstruktory

set

Zkonstruuje objekt set, který je prázdný nebo který je kopií celého nebo části některého jiného objektu set.

Typedefs

allocator_type

Typ, který představuje třídu allocator pro objekt set.

const_iterator

Typ, který poskytuje obousměrný iterátor, který může přečíst prvek const v objektu set.

const_pointer

Typ, který poskytuje ukazatel na prvek const v objektu set.

const_reference

Typ, který poskytuje odkaz na prvek const uložený v objektu set pro čtení a provádění operací const.

const_reverse_iterator

Typ, který poskytuje obousměrný iterátor, který může přečíst jakýkoli prvek const v objektu set.

difference_type

Celočíselný typ se znaménkem, který slouží k vyjádření počtu prvků objektu set v rozsahu mezi prvky, na které odkazují iterátory.

iterátor

Typ, který poskytuje obousměrný iterátor, který může číst nebo upravovat libovolný prvek v objektu set.

key_compare

Typ, který poskytuje objekt funkce, který může porovnat dva klíče řazení pro určení relativního pořadí dvou prvků v objektu set.

key_type

Typ popisuje objekt uložený jako prvek sady (objekt set) v jeho kapacitě jako klíč řazení.

ukazatel

Typ, který poskytuje ukazatel na prvek v objektu set.

reference

Typ, který poskytuje odkaz na prvek uložený v objektu set.

reverse_iterator

Typ, který poskytuje obousměrný iterátor, který může číst nebo upravovat prvek v obráceném objektu set.

size_type

Celočíselný typ bez znaménka představující počet prvků v objektu set.

value_compare

Typ poskytující objekt funkce, který může porovnat dva prvků pro určení jejich relativního pořadí v sadě.

value_type

Typ popisuje objekt uložený jako prvek sady (objekt set) v jeho kapacitě jako hodnotu.

Členské funkce

begin

Vrátí iterátor adresující první prvek v sadě.

cbegin

Vrátí iterátor const adresující první prvek v sadě.

cend

Vrátí konstantní iterátor adresující umístění následující po posledním prvku v objektu set.

vymazat

Odstraní všechny prvky objektu set.

count

Vrátí počet prvků objektu set, jejichž klíč odpovídá klíči se zadaným parametrem.

crbegin

Vrátí konstantní iterátor adresující první prvek v obráceném objektu set.

crend

Vrátí konstantní iterátor adresující umístění následující po posledním prvku v obráceném objektu set.

emplace

Vloží vytvořený prvek na místo do objektu set.

emplace_hint

Vloží vytvořený prvek s náznakem umístění na místo do objektu set.

empty

Testuje, zda je objekt set prázdný.

end

Vrátí iterátor adresující umístění následující po posledním prvku v objektu set.

equal_range

Vrátí pár iterátorů, respektive, na první prvek objektu set s klíčem, který je větší než zadaný klíč a na první prvek objektu set s klíčem, který je roven nebo větší než tento klíč.

smazat

Odebere prvek nebo rozsah prvků v objektu set od zadané pozice nebo odebere prvky, které odpovídají zadanému klíči.

find

Vrátí iterátor adresující umístění prvku v objektu set, který má klíč odpovídající zadanému klíči.

get_allocator

Vrátí kopii objektu allocator, který slouží k vytvoření objektu set.

insert

Vloží prvek nebo rozsah prvků do objektu set.

key_comp

Načte kopii objektu porovnání, která je použita pro seřazení klíčů v objektu set.

lower_bound

Vrátí iterátor na první prvek objektu set s klíčem, který je roven nebo větší než zadaný klíč.

max_size

Vrátí maximální délku objektu set.

rbegin

Vrátí iterátor adresující první prvek v obráceném objektu set.

rend

Vrátí iterátor adresující umístění následující po posledním prvku v obráceném objektu set.

velikost

Vrátí počet prvků v objektu set.

swap

Vymění prvky dvou sad.

upper_bound

Vrátí iterátor na první prvek objektu set s klíčem, který je větší než zadaný klíč.

value_comp

Získá kopii objektu porovnání použitého pro seřazení hodnot prvků objektu set.

Operátory

operator=

Nahradí prvky objektu set kopií jiného objektu set.

Požadavky

Hlavička: <set>

Obor názvů: std

Viz také

Referenční dokumentace

<set>

Bezpečný přístup z více vláken ve standardní knihovně C++

Standardní knihovna šablon

Koncepty

Kontejnery