Fyzické dátové modely (interná úroveň). Vytváranie a používanie predvolených nastavení, obmedzení a pravidiel pomocou T-SQL Hodnota zodpovedajúca kľúču nie je nastavená

O čom je tento článok

Tento článok pokračuje v sérii článkov „Prvé kroky vo vývoji na 1C“. Rozoberá princípy práce s generickými kolekciami. Po prečítaní článku sa dozviete:

  • Čo sú generické zbierky, kedy a v akých prípadoch by sa mali používať?
  • Čo majú spoločné všetky univerzálne kolekcie? Aké techniky sa dajú použiť na prácu so všetkými?
  • Čo je pole, ako a kedy ho použiť? Aké metódy má?
  • Prečo používať štruktúru? Ako sa líši od poľa?
  • Kedy použiť zoznam hodnôt? Ako to zobraziť vo formulári?
  • Súlad – čo to je a kedy ho použiť? Aké sú výhody štruktúry?
  • Na čo slúži tabuľka hodnôt? Ako opísať jeho štruktúru? Ako pridať/odstrániť riadky? Ako to dostať do formy?
  • Strom hodnôt – na čo sa používa? Ako vyplniť a zobraziť formulár? Ako s ním pracovať?

Použiteľnosť

Článok pojednáva o platforme 1C:Enterprise 8.3 aktuálneho vydania.

Ako pracovať s univerzálnymi kolekciami v 1C

Zbierka hodnôt je druh kontajnera, ktorý môže zvyčajne obsahovať ľubovoľný počet prvkov. Zároveň často neexistujú žiadne prísne obmedzenia na typ údajov.

Do všeobecnej kolekcie môžete pridať hodnoty. Všetky hodnoty v kolekcii je možné prechádzať. Tieto kolekcie sa používajú hlavne na nejaký druh spracovania v algoritmoch. Tie. toto sú niektoré dynamické štruktúry, ktoré existujú počas trvania algoritmu.

Je dôležité pochopiť, že kolekcie nie sú uložené v databáze (nehovoríme o dátovom type Value Store, ktorý dokáže uložiť takmer akýkoľvek dátový typ).

Existovať rôzne druhy generické kolekcie: pole, štruktúra, mapovanie, pevné pole, tabuľka hodnôt, tabuľková časť atď. Ale všetky kolekcie majú podobné správanie.

Kolekcia môže byť vytvorená ako výsledok nejakej funkcie (funkcia vracia generickú kolekciu ako hodnotu).

Dostupné Nová kolekcia manuálne volaním konštruktora a vytvorením inštancie triedy.

Napríklad: OurArray = Nové pole;

Konštruktory pre mnohé generické kolekcie sú parametrizované.

Takže v konštruktéri pre môžete určiť počet prvkov v zodpovedajúcich rozmeroch. Tie. môžete okamžite vyhlásiť multidimenzionálny .

Zodpovedajúci popis konštruktora je v pomocníkovi syntaxe.

Pomocou parametrov konštruktora teda môžete okamžite nastaviť požadované správanie tohto objektu.

Ale parametre sú voliteľné, vývojár ich nemôže nastaviť a ďalej definovať správanie Array, ako uzná za vhodné.

Takmer každá generická kolekcia môže byť vytvorená pomocou konštruktora (s výnimkou tableparts, ktoré fungujú ako konfiguračné objekty).

Pre generické zbierky existujú všeobecné pojmy ako index a číslo. Každý prvok kolekcie má index. Index začína od nuly.

Pre prístup k prvku OurArray, môžete použiť indexový prístup, na tento účel je index uvedený v hranatých zátvorkách.

Napríklad, OurArray. Všimnite si, že v tomto prípade systém vráti prvok poľa na indexe 3 a v poradí je to štvrtý prvok poľa.

Pre niektoré kolekcie existuje aj pojem radové číslo. Číslo riadku začína jednotkou. Napríklad pre tabuľkovú sekciu existuje taká vlastnosť ako číslo riadku. Je dôležité mať na pamäti, že ak poznáme číslo riadku a chceme pristupovať podľa indexu, potom by sa ako index mala použiť hodnota o jeden menšia ako číslo riadku.

Koncept čísla riadku neexistuje pre všetky kolekcie, ale hlavne pre tie, ktoré je možné zobraziť v používateľskom rozhraní.

Pre všetky kolekcie sa používa prechádzanie prvkov kolekcie. Obtok je možný dvoma spôsobmi: cyklus Pre a cyklus Pre každého.

Pre väčšinu všeobecných kolekcií platia nasledujúce metódy: Počet, Index, Pridať, Vložiť, Odstrániť a Nájsť.

Count je funkcia, ktorá vracia počet prvkov v kolekcii. Môže sa použiť pred slučkou Pre, ako je znázornené na obrázku.

Metóda Index neexistuje pre všetky kolekcie, ale iba pre tie, na ktorých prvky možno odkazovať. Príkladom je Tabuľka hodnôt.

Tabuľka hodnôt je špecifická kolekcia reťazcov, pričom reťazce môžu obsahovať rôzne stĺpce s odlišné typy hodnoty.

Každý riadok je nezávislý subjekt. Môžete naň získať odkaz, cez tento riadok máte prístup k hodnotám stĺpcov v tomto riadku.

Metóda Index umožňuje určiť, ktorý index zodpovedá danému riadku (teda aktuálnej pozícii riadka v tabuľke). Hodnoty indexu začínajú na nule.

Metódy na pridávanie nových hodnôt do tejto zbierky existujú takmer vo všetkých univerzálna kolekcia. Obrázok ukazuje, ako vyplniť pole hodnotami od 0 do 10 dvoma spôsobmi.

Na pridanie prvku do poľa môžeme použiť metódu Pridať, uveďte pridanú hodnotu v zátvorke. V tomto prípade bude hodnota pridaná na koniec zoznamu, t.j. Pole sa bude neustále zvyšovať kvôli poslednej pozícii.

Ďalšou metódou, ktorá vám umožňuje pridávať hodnoty do kolekcie, je metóda Vložiť. Líši sa od metódy Pridať aby ste mohli určiť, kam vložiť pridaný prvok.

Syntax: Vložiť (,)

Prvý parameter určuje index, do ktorého sa vloží nová hodnota. Tie. môžeme napríklad určiť, že každá hodnota sa má vložiť na začiatok zoznamu (druhý spôsob na obrázku vyššie).

Metóda sa používa na odstránenie prvkov z kolekcie. Odstrániť. Pri metóde Delete je indexom označené, ktorý prvok vymažeme.

Syntax: Odstrániť ()
Príklad použitia: OurArray.Delete(5);

Je potrebné poznamenať, že pre tie kolekcie, kde reťazce predstavujú nezávislú entitu (napríklad pre TableValues), môžeme tiež použiť metódu get index na odstránenie daného riadku neskôr.

Takmer všetky zbierky majú metódu na nájdenie hodnoty - Nájsť. Metóde sa odovzdá hodnota, ktorú chceme nájsť. V niektorých kolekciách môžete zaviesť akékoľvek obmedzenia.

Napríklad v Tabuľka hodnôt môžete zadať tie riadky, tie stĺpce, v ktorých chcete hľadať.

Ak sa hodnota nájde, táto metóda vráti index alebo špecifický reťazec. Ak sa nenájde žiadna hodnota, vráti sa hodnota typu. Nedefinované. Pri použití na pole sa vráti Index alebo hodnotu Nedefinované.

Príklad použitia: OurVariable = OurArray.Find(8);

Generické zbierky je možné veľmi rýchlo vyčistiť, t.j. odstráňte úplne všetky prvky. Na tento účel sa používa metóda jasný(), ktorý odstraňuje prvky poľa, struny TableValues alebo údaje z iných zbierok.

Ďalšie metódy pre pole

Metóda Bboundary() vráti počet prvkov mínus jeden. Tie. ak použijeme slučku Pre, potom namiesto metódy Množstvo môžeme okamžite použiť metódu Hranica().

Najmä premenná NumberInArray mohla byť definovaná inak:

NumberInArray = OurArray.InBorder();
Potom pri popise samotného cyklu by sa od tejto premennej nemalo odčítať.

Metóda Set vám umožňuje priradiť hodnotu prvku Array pomocou indexu.

Syntax: Inštalácia(,)

Príklad: OurArray.Set(2,8);

Alternatívna možnosť: OurArray = 8;

Túto metódu môžete použiť pre pole Získajte, aby bolo možné prečítať hodnotu v indexe bez použitia hranatých zátvoriek.

Syntax: Získať ()

Príklad: OurVariable = OurArray.Get(2);

Alternatívna možnosť: OurVariable = OurArray;

Univerzálna štruktúra kolekcie

Štruktúra, podobne ako pole, môže mať neobmedzený počet prvkov, ale obsah prvku sa od poľa líši.

Štruktúra je kolekcia, ktorej každá hodnota pozostáva z páru. Prvý prvok dvojice sa nazýva kľúč. Druhým prvkom páru je Význam.

kľúč je striktne reťazcový dátový typ, ktorý popisuje hodnotu. Napríklad, kľúč"Kód" môže zodpovedať hodnote 113; kľúč"Meno" znamená "Vasya". Na samotnú hodnotu neexistuje žiadne obmedzenie typu údajov.

Štruktúru je veľmi výhodné použiť, ak chceme vytvoriť zoznam parametrov. Ak toto Štruktúra volal Naša štruktúra, potom sa budeme odvolávať na jeho dve hodnoty takto: OurStructure.Code a OurStructure.Name.

Takéto odvolanie je oveľa pohodlnejšie, ako keby sme definovali všetky parametre v poli a pristupovali k nim indexom.

Štruktúra robí programový kód čitateľným (pochopiteľným). Štruktúra sa používa pomerne často, oveľa častejšie ako Array.

Používa sa na popis niektorých parametrov, ktoré sú vo všetkých algoritmoch často dosť veľké.

Okrem toho sa Štruktúra používa, ak procedúra a funkcia obsahujú veľké množstvo odovzdaných parametrov.

Potom je oveľa pohodlnejšie zapísať všetky parametre do Štruktúry a odovzdať ju ďalej. Tie. dochádza k „nabaľovaniu“ parametrov procedúr a funkcií.

Samostatne je potrebné poznamenať, že ako kľúč v štruktúre sa nemôže objaviť absolútne žiadny reťazec. Platia určité obmedzenia.

kľúč by mal fungovať ako identifikátor. To znamená, že v kľúč nesmú tam byť žiadne medzery a nemôže začínať číslom.

Prípustný štart kľúč s písmenom alebo podčiarkovníkom. Touto cestou, kľúč musí spĺňať požiadavky na vytváranie identifikátorov.

Všimnime si, ako sa štruktúra líši od poľa. Štruktúra má metódu Vložiť, Pole má dva spôsoby vloženia: Vložiť(do určitej polohy) a Pridať(na konci zoznamu). V poli sú všetky prvky usporiadané.

Štruktúra je druh neusporiadanej množiny. Preto existuje iba metóda vkladania pre štruktúru.

Hodnota sa nevloží na konkrétnu pozíciu, ale do zadanej množiny. Na štruktúru nemožno odkazovať indexom ako na iné generické kolekcie.

Prvky štruktúry sú označované iba názvom kľúča. Slučka For each of však funguje aj pre štruktúru, ale nemali by ste sa spoliehať na poradie prvkov štruktúry.

Štruktúra sa vytvára rovnakým spôsobom ako iné generické kolekcie pomocou konštruktora New, ktorý špecifikuje typ údajov štruktúry.

Podobne ako pole, aj konštruktor Struct môže mať parametre. Tie. je možné popísať obsah samotnej Štruktúry pomocou konštruktora.

Na rozdiel od Array, kde môžete jednoducho určiť počet prvkov pre všetky dimenzie, v Structure je možné nastaviť samotný obsah.

Napríklad: OurStructure = New Structure("Kód,Názov", 133, "Vasya");

Najprv sú uvedené názvy kľúčov oddelené čiarkami a potom v rovnakom poradí hodnoty parametrov.

Na pridanie novej hodnoty do štruktúry existuje metóda Vložiť, ktorý vloží nový pár (Kľúč a Hodnota).

Napríklad: OurStructure.Insert("Členovia rodiny",3);

Štruktúra sa vyznačuje ďalšou metódou, ktorá sa používa pomerne často. Toto je metóda Nehnuteľnosť.

Pomocou tejto metódy môžete pochopiť, či v tejto štruktúre existuje taký prvok, pre ktorý má kľúč taký a taký názov.

Ak takýto prvok existuje, systém vráti hodnotu True, inak vráti hodnotu False.

Napríklad výraz OurStructure.Property („Členovia rodiny“) sa bude rovnať True. Táto metóda sa pri analýze štruktúry používa pomerne často.

Ako pre každú univerzálnu kolekciu je povolený prístup k vlastnostiam štruktúry podľa indexu. Ale index pre štruktúru je hodnota reťazca.

Napríklad: Správa (Naša štruktúra["Členovia rodiny"]);

Nemali by sme však zabúdať, že štruktúra nie je usporiadaná množina objektov, a preto je prístup pomocou indexu 0, 1, 2 neprijateľný.

Generic Collection List of Values

Zoznam hodnôt je lineárny zoznam prvkov ľubovoľného dátového typu.

Každý prvok pozostáva z niekoľkých hodnôt. Schematicky môže byť zoznam hodnôt reprezentovaný ako zoznam so štyrmi stĺpcami.

Prvý stĺpec - značka. Má booleovský typ údajov a umožňuje používateľovi buď začiarknuť políčka, alebo ich začiarknutie zrušiť.

Druhý stĺpec je obrázok, ktorý môže tento prvok nejako vizuálne znázorniť, t.j. priraďte tento riadok k ľubovoľnému obrázku.

Tretí stĺpec je samotná uložená hodnota, t.j. ide o akýkoľvek typ údajov a môže sa líšiť v rôznych riadkoch.

Štvrtý stĺpec je pohľad, t.j. je to nejaký reťazcový popis danej hodnoty. Pohľad sa používateľovi zobrazí pri zobrazení tohto prvku. V tomto prípade, ak nie je nastavené zobrazenie, systém sa pokúsi získať zobrazenia pre prvok obsiahnutý v tejto pozícii.

Zoznam hodnôt- toto je objekt, s ktorým môže používateľ vizuálne pracovať. Tie. Zoznam hodnôt možno zobraziť vo formulári.

Používateľ s ním môže vykonávať niektoré akcie. okrem toho Zoznam hodnôt môžu byť odvodené nezávisle pomocou metód, t.j. zobraziť na obrazovke v niektorej vetve algoritmu (okrem kód servera), takže používateľ vyberie riadok alebo zaškrtne niektoré políčka.

Poďme nájsť Zoznam hodnôt v sitax pomocníkovi. Konštruktér Zoznam hodnôt nie je parametrizovaný (nie je možné nastaviť žiadne predvolené hodnoty).

Existujú metódy ako:

  • Vložiť(,) ;
  • Pridať(,);
  • Množstvo ();
  • Index().

Existujú aj špeciálne metódy, napr. UnloadValues(). Tým sa vytvorí pole, do ktorého sa skopíruje zoznam hodnôt. Napríklad:

ArrayElements = ListPriceTypes.UnloadValues();

Existuje aj opačná metóda:
PriceTypeList.LoadValues(ElementsArray);

Existujú metódy vyhľadávania:
FindByValue(); FindByIdentifier().

Existuje metóda kopírovania:
CopyList = ListPriceTypes.Copy();
Táto metóda je určený na vykonanie určitého druhu úpravy s kópiou.

Existujú metódy:
SortByValue();
SortByView().

Metódy Vybrať položku(,) a MarkItems() vyvolajte modálne dialógové okno, ktoré zastaví vykonávanie algoritmu, kým používateľ toto okno nezavrie.

Ak chcete použiť tieto metódy vo vlastnostiach konfigurácie Režim použitia modality musí byť nastavené na Použite.

Vzorový kód volaný z modulu spravovanej aplikácie:

Zobrazte tento kód v používateľskom režime (modálne dialógové okno).

Nižšie Zoznam hodnôt použitý ako dostupný typ údajov pre atribút formulára. Pre formulár spracovania vytvoríme nový atribút, určíme mu typ Zoznam hodnôt a zobraziť ho vo formulári.

Tvoríme nový tím StoreGifts, preneste ho do formulára a definujte preň obsluhu akcie.

V užívateľskom režime sa po kliknutí na tlačidlo Vyplniť darčeky vo formulári spracovania zobrazí vyplnený zoznam.

V prípade potreby je možné zoznam upraviť: pridať niektoré prvky, niektoré odstrániť.

Súlad s univerzálnou kolekciou

Táto kolekcia je veľmi podobná Štruktúra. Rovnako ako štruktúra, aj zhoda je súbor hodnôt, ktorý pozostáva z kľúča a samotnej hodnoty.

Hlavný rozdiel je v tom, že akýkoľvek typ údajov môže byť špecifikovaný ako kľúč, aj ako hodnota. Vzhľadom na túto vlastnosť je potrebné pristupovať k hodnote zhody indexom, hodnota kľúča je špecifikovaná ako hodnota indexu.

Kľúčom môže byť iný typ údajov ako reťazec. Vlastnosti a metódy práce s Matchingom sú takmer rovnaké ako pri štruktúre.

Konštruktor zhody na rozdiel od štruktúry neobsahuje možnosť špecifikovať parametre.

Príklad použitia:

Korešpondencia je užitočná, keď je potrebné prepojiť ľubovoľné dve štruktúry. Napríklad každý riadok tabuľkovej časti sa musí zhodovať s riadkom z tabuľky hodnôt.
V tomto prípade sa riadok tabuľkovej časti použije ako kľúč zhody a zobrazí sa zodpovedajúca hodnota.

Pri vkladaní prvkov do kolekcie Match iných ako metóda Vložiť(,) Existuje ďalší spôsob vloženia hodnoty, a to použitie normálneho operátora priradenia.

Napríklad: OurMatch = Nový zápas;
Zhoda = 999;

Tie. ak sa prvok v kolekcii nenachádza, pridá sa pomocou operátora priradenia a ak je prítomný, aktualizuje sa.

Toto sa líši od štruktúry.

Generic Collection Table of Values

Tabuľka hodnôt je tabuľka s ľubovoľným počtom riadkov a ľubovoľným počtom stĺpcov. Priesečník môže ukladať hodnoty akéhokoľvek typu údajov. V prípade potreby je možné stĺpce napísať, t.j. určiť, v ktorom stĺpci je uložený typ údajov.

Môžete nechať stĺpce nezadané, potom môže rovnaký stĺpec v rôznych riadkoch ukladať hodnoty rôznych typov.

Rozdiely TableValues z 2D poľa:

  • ide o objekt, s ktorým môže užívateľ pracovať (tabuľka hodnôt môže byť zobrazená na obrazovke, užívateľ ju môže vyplniť, v budúcnosti je možné čítať zadané údaje);
  • vytváranie indexov pre rýchle vyhľadávanie;
  • klonovanie, vyplnenie celého stĺpca určitou hodnotou, uvoľnenie všetkých stĺpcov do poľa.

Tabuľka hodnôt používa sa ako druh vyrovnávacej pamäte na ukladanie informácií. Tabuľka hodnôt je vrátený a prijatý ako parameter mnohými systémovými metódami. Je možné zostaviť dotaz na tabuľku hodnôt.

takže, Tabuľka hodnôt pozostáva zo sady riadkov a sady stĺpcov. Riadky aj stĺpce sú kolekcie.

Tie. vnútri zbierky Tabuľka hodnôt sú ešte dve kolekcie. Obráťme sa na asistenta syntaxe a nájdime Tabuľka hodnôt.

Podporované typy údajov: samotné Tabuľka hodnôt, ktorý sa skladá zo strún. Každý riadok je reprezentovaný dátovým typom RowTableValues, ktorý má svoje vlastnosti a metódy. Dostupné CollectionColumns TableValues má tiež určité vlastnosti.

Dôležitý bod! Postup, ktorý generuje Tabuľka hodnôt, mal by sa skompilovať & na serveri.

Než začnete pracovať s Tabuľka hodnôt, je potrebné určiť, ktoré stĺpce bude obsahovať (t.j. vytvoriť ich). Syntax:

Pridať (,)
(voliteľné)
Typ: Reťazec.
(voliteľné)
Typ: Typy popisu
(voliteľné)
Typ: Reťazec.
(voliteľné)
Typ: Číslo.

Napríklad:

Na zavolanie tejto procedúry použijeme príkaz.

V popise TableValues ako sú prvky kolekcie presne RowsTableValues.

Na rozdiel od stĺpcov, ktoré pozostávajú iba z vlastností (Názov, Typ, Názov, Šírka), v RowTableValues existujú vlastnosti (odkaz podľa názvu stĺpca) aj metódy (môžete získať a nastaviť hodnotu, pracovať s vlastníkmi).

Pridať Nový riadok k tabuľke, musíte použiť metódu buď Pridať (), alebo vložiť(). V druhom prípade by ste mali určiť, na ktorú pozíciu má byť požadovaný reťazec umiestnený.

Ak chcete stĺpcu priradiť hodnotu, odkazujeme naň názvom stĺpca alebo indexom (pomocou hranatých zátvoriek) oddelených bodkou.

Na plnenie TableValues možno použiť nasledujúce metódy:

jasný()- odstrániť všetky riadky z TableValues.

FillValues(,)– umožňuje vyplniť všetky stĺpce alebo vybrané stĺpce jednou hodnotou.
LoadColumn(,)– načíta stĺpec z poľa.
UnloadColumn()– uvoľní stĺpec do poľa.

Posledné dve metódy sú užitočné, keď potrebujete presunúť stĺpec z jednej tabuľky hodnôt do druhej.

Kopírovať (,)- umožňuje vytvoriť novú tabuľku na základe existujúcej tabuľky Tabuľka hodnôt, pričom nie všetky riadky a všetky stĺpce, ale iba niektoré z nich. Návratová hodnota - Tabuľka hodnôt.

Môžete skopírovať štruktúru TableValues. Na to existuje zodpovedajúca metóda. CopyColumns(). Dostaneme prázdne Tabuľka hodnôt s požadovanou štruktúrou.

AT Tabuľka hodnôt existuje metóda Celkom(). Môžete zadať stĺpec, v ktorom chcete sčítať číselné hodnoty. S ohľadom na predtým uvedený kód v tabuľke môžete vypočítať hodnotu: TK.Total („Súčet“).

AT Tabuľka hodnôt pomocou metódy je možné zoskupiť (zbaliť) číselné hodnoty podľa rovnakých hodnôt určitých stĺpcov Zbaliť (,).

S ohľadom na predtým uvedený kód v tabuľke môžete vypočítať hodnotu: TK.Collapse („Deň v týždni“, „Suma“).

Tabuľka hodnôt sa môže zobraziť na obrazovke používateľa, aby ste s ním mohli vykonávať akékoľvek akcie. Ale na rozdiel od Zoznam hodnôt z programového kódu, nemôžete len zavolať stôl na obrazovke.

Zobraziť Tabuľka hodnôt na obrazovke vytvorte atribút formulára a priraďte mu typ údajov Tabuľka hodnôt.

Potom by sa výsledná tabuľka mala zobraziť vo formulári.

Vo formulárovom module na konci predtým zostaveného algoritmu (v Postupe na vytvorenie tabuľky hodnôt) pridajte:
ValueVFormData(TK, Tabuľka);

Generic Collection Tree of Values

všestranná kolekcia, ktorá je veľmi podobná Tabuľka hodnôt. Rozdiel oproti tabuľke je v tom, že riadky stromu môžu byť navzájom podriadené, t.j. môže sa vytvoriť určitá hierarchia.

Dá sa zobraziť aj na obrazovke. Strom hodnôt explicitne pozostáva z kolekcie riadkov a kolekcie stĺpcov. V strome sú dve vlastnosti, riadky a stĺpce.

Keďže riadky môžu byť jeden druhému podriadené, potom pre každý riadok možno zadať rodiča, ako aj riadky, ktoré sú mu podriadené.

Vytvorme si príslušný stromový príkaz a postup jeho spracovania.

Poďme tvoriť v ktorom je jeden nadradený riadok a dva podriadené riadky.

Vytvorte atribút formulára DerZn(údajový typ - Strom hodnôt).

Pre tento atribút vytvoríme stĺpce Rok a Mesiac.

Presuňte príslušný prvok DerZn do formulára.

Na koniec Postupy TreeOnServer() pridať:

ValueVFormData(StromZn, DerZn);

Pozrime sa, čo sa stalo v používateľskom režime.

S tlačidlom Pridať môžete pridať nové riadky. Môžu tiež vytvárať hierarchiu.

Na iteráciu cez všetky prvky stromu hodnôt musíme použiť rekurziu, t.j. volanie procedúry od seba. Napríklad spracovanie stromu hodnôt môže vyzerať takto:

Týmto sa končí naše prvé predstavenie univerzálnych kolekcií.

V ďalšom článku sa pozrieme na to, aký dôležitý mechanizmus môže vývojár použiť na zjednodušenie prístupu k prvku slovníka z programového kódu.

Je postavená nasledovne. Poradie záznamov zodpovedajúcich záznamom zdrojovej tabuľky je zoradené podľa hodnôt primárneho kľúča. Logické záznamy sú spojené do blokov (k záznamov v blokoch).

Hodnota kľúča bloku je minimálna hodnota kľúča záznamov zahrnutých v bloku. Bloková sekvencia je poslednou úrovňou B-stromu. Vytvorí sa index predchádzajúcej úrovne. Záznamy tejto úrovne obsahujú hodnotu kľúča bloku nasledujúcej úrovne a adresu ukazovateľa spojenia príslušného bloku; záznamy tejto úrovne sú tiež spojené do blokov (každý k záznamov). Potom sa podobným spôsobom vytvorí index vyššej úrovne a tak ďalej, až kým počet položiek indexu na určitej úrovni nebude väčší ako k .

Zvážte postup práce s B-stromom na príklade. Nech existuje súbor inštancií logických záznamov, ktorých kľúče nadobúdajú hodnoty 2, 7, 8, 12, 15, 27, 28, 40, 43, 50. Pre jednoznačnosť berieme k=2 (my spojiť 2 inštancia záznamov). Ten vytvorený pre tento príklad je znázornený na obr. 9.7 (pre zjednodušenie sú na úrovni 4 uvedené iba kľúče logických záznamov a hodnoty ostatných polí týchto záznamov nie sú uvedené).


Ryža. 9.7.

Bloky obsahujú hodnotu kľúča príslušného bloku. Hodnota k sa rovná 2.

Vytvorením B-stromu sú všetky zdrojové záznamy v rovnakej vzdialenosti od najvyššieho indexu (strom je vyvážený).

Uvažujme o implementácii hlavných operácií.

Vyhľadajte a prečítajte si záznam z nastavená hodnota kľúč

Prečíta sa horný index. Porovnajte danú hodnotu kľúča s hodnotou kľúča posledný záznam index. Ak je zadaná hodnota kľúča väčšia alebo rovná hodnote kľúča nasledujúcej položky indexu (ak taká položka existuje), potom sa blok položiek indexu ďalšej úrovne načíta na adrese odkazu uvedenej v aktuálnej položke. Potom sa proces opakuje.

Predpokladáme, že všetky bloky sa nachádzajú vo VP. Potom sa počet volaní do VI pri vyhľadávaní informácií bude rovnať počtu stromových úrovní. Počet úrovní stromu sa rovná minimálnej hodnote l , pri ktorej je splnená podmienka k l >= N (N je počet logických záznamov).

Úprava (oprava) zápisu

Po vyhľadaní a prečítaní záznamu sa zmenia nastaviteľné polia. Ak to nie je kľúč záznamu, ktorý sa opravuje, potom sa na jeho miesto umiestni upravený záznam. Ak sa zmení hodnota kľúča, starý záznam sa vymaže (v príslušnom bloku sa objaví „prázdny“ záznam) a zmenený záznam sa zadá rovnakým spôsobom ako novo pridaný.

Odstránenie záznamu

Po vyhľadaní sa nájdený záznam vymaže (namiesto tohto záznamu sa do príslušného bloku zapíše „prázdny“ záznam).

Pridanie záznamu

V prvom rade sa určí, kde sa má pridaný záznam s danou hodnotou kľúča nachádzať. Postup pri hľadaní bloku, kde by sa mal tento záznam nachádzať, je podobný postupu popísanému vyššie pri hľadaní záznamov s danou hodnotou kľúča. Ak sa v bloku nižšej úrovne nájde "prázdny" záznam, pridaný záznam sa pridá do tohto bloku (s nutným preusporiadaním záznamov v rámci bloku).

Ak v príslušnom bloku nižšej úrovne nie je prázdne miesto, blok sa rozdelí na dva bloky. Záznamy sa zapisujú do prvého z nich, ostatné sa zapisujú do druhého. Hodnota kľúča každého zo špecifikovaných blokov bude, ako bolo opísané vyššie, minimálna hodnota kľúčov záznamov zahrnutých v bloku. Pridávaný záznam sa zapíše do bloku, ktorého hodnota kľúča je menšia ako hodnota kľúča pridávaného záznamu. Vzhľad nového bloku s novou hodnotou kľúča si vyžaduje vytvorenie vhodného bloku nový vstup v indexe na predchádzajúcej úrovni. Tento záznam obsahuje novú hodnotu kľúča nového bloku a ukazovateľ na jeho umiestnenie. Postup pridávania takejto položky je podobný postupu opísanému vyššie. Blok predchádzajúcej úrovne sa nachádza tam, kde by mal byť tento záznam umiestnený. Ak je v bloku prázdne miesto, záznam sa pridá do bloku, ak je blok plný, rozdelí sa na dva bloky, záznam sa zapíše do jedného z blokov, vytvorí sa indexový záznam predchádzajúcej úrovne , a tak ďalej.

Variant je možný, keď musíte rozdeliť blok špičková úroveň a tvoria ďalšiu úroveň stromu.

Zvážte príklad znázornený na obr. 9.7 pridaním položky s kľúčom 10.

1. Porovnanie na prvej úrovni.

Pohyb na ľavej vetve.

2. Porovnanie na druhej úrovni.

Pohyb na ľavej vetve.

3. Porovnanie na tretej úrovni.

Pohyb po pravej vetve.

Požadovaný blok

4. Blok je plný.

Je rozdelená na 2 bloky

Porovnanie 8<10<12.

V bloku 1 sa zadáva záznam s kľúčom 10

Na najnižšej úrovni sa objavil nový záznam s hodnotou kľúča 12. Do indexu predchádzajúcej úrovne je potrebné pridať nový záznam s kľúčom 12 a smerníkom na záznam najnižšej úrovne.

5. Do bloku je potrebné pridať položku s kľúčom 3. úrovne s hodnotou 12. Blok je plný, je rozdelený na dva bloky

Porovnanie 8<12.

Záznam sa pridá do druhého bloku

6. Na úrovni 3 sa objavil blok s novým kľúčom 8. Je potrebné pridať nový záznam s kľúčom 8 a ukazovateľom na zodpovedajúci blok úrovne 3 na úrovni 2.

7. Do bloku by sa mal pridať záznam s kľúčom 2. úrovne s hodnotou 8. Blok je plný, je rozdelený na dva bloky.

Záznam sa pridá do bloku 1.

8. Na úrovni 2 sa objavil blok s novým kľúčom 15, je potrebné pridať nový záznam s kľúčom 15 a ukazovateľ na zodpovedajúci blok úrovne 2 na úrovni 1.

Predvolené hodnoty, obmedzenia a pravidlá - toto sú voliteľné atribúty, ktoré možno definovať v stĺpcoch a tabuľkách databázy. O ticho(predvolené hodnoty) - to sú hodnoty, ktoré sú zadané v konkrétnom stĺpci. Obmedzenia(obmedzenia) sa používajú ako spôsob identifikácie platných hodnôt pre stĺpec (na odmietnutie neplatných hodnôt), ako aj ako prostriedok na zabezpečenie integrity údajov v rámci databázových tabuliek a medzi súvisiacimi tabuľkami. Obmedzenie iba na jeden stĺpec sa nazýva obmedzenie hodnoty (stĺpca): obmedzuje iba hodnoty tohto stĺpca. Obmedzenie, ktoré ovplyvňuje viacero stĺpcov, sa nazýva referenčné obmedzenie: v tomto prípade musí kombinácia hodnôt pre stĺpce špecifikované v obmedzení spĺňať požiadavky obmedzenia. Existuje päť typov obmedzení: NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY a CHECK.

Nulová hodnota(hodnota null) je neznáma hodnota, pre ktorú platí zápis NULL . Nulová hodnota v stĺpci zvyčajne znamená, že pre daný riadok stĺpca neexistujú žiadne údaje, pretože hodnota je neznáma, nedáva zmysel, nie je nastavená alebo bude nastavená v budúcnosti. Hodnoty Null nie sú prázdne hodnoty a nie hodnoty čísla 0, ich skutočné hodnoty sú neznáme (neznáme), takže žiadne dve hodnoty Null nie sú rovnaké.

IDENTITA Nehnuteľnosť. Keď vytvoríte tabuľku, môžete jeden zo stĺpcov zadať ako stĺpec identity pridaním vlastnosti IDENTITY do definície stĺpca. Ak je stĺpec vytvorený s vlastnosťou IDENTITY, potom SQL Server automaticky vygeneruje hodnotu riadka pre tento stĺpec, vypočítanú z počiatočnej hodnoty a hodnoty prírastku. Počiatočná hodnota je hodnota identity pre prvý riadok vložený do tabuľky. Prírastok je čiastka, o ktorú SQL Server zvýši hodnotu identity pre po sebe idúce riadky. Zakaždým, keď je zadaný riadok, SQL Server priradí aktuálnu hodnotu identity dátovému prvku v stĺpci identity zadaného v novom riadku. Ďalší zadaný riadok dostane hodnotu identity, ktorá je o prírastok väčšia ako aktuálna maximálna hodnota identity. Stĺpce identity sa bežne používajú v obmedzeniach primárneho kľúča v tabuľkách, ktoré umožňujú jedinečnú identifikáciu riadkov. Napríklad, ak zadáte IDENTITY(1, 10), potom hodnota identifikačného stĺpca pre prvý zadaný riadok bude 1, pre druhý riadok bude 10, pre tretí riadok bude 20 atď. . Ak nezadáte počiatočnú hodnotu alebo prírastok, použijú sa predvolené hodnoty 1 a 1. Stĺpce identity nemôžu obsahovať predvolené hodnoty a nesmú mať hodnotu null. Každá tabuľka môže mať iba jeden identifikačný stĺpec.


Štandardne sa identifikačné stĺpce nedajú zadávať priamo a nemožno ich meniť. Ak chcete prepísať odstránený reťazec a chcete zachovať starú identifikačnú hodnotu tohto reťazca, môžete predvolené nastavenie prepísať pomocou tohto príkazu:

SET IDENTITY INSERT table.name ZAPNUTÉ

Pomocou tohto operátora môžete vložiť riadok a priradiť hodnotu identifikačného stĺpca, ktorý potrebujete. Po dokončení zadávania reťazca musíte odstrániť možnosť vkladania do identifikačného stĺpca pomocou nasledujúceho operátora:

SET IDENTITYINSERT table_name VYP

Potom SQL Server vezme najväčšiu hodnotu z tohto stĺpca ako počiatočnú hodnotu použitú pri pridávaní nasledujúcich riadkov.

Vytvorte predvolené nastavenie pre stĺpec používajúci príkaz CREATE TABLE je preferovaná štandardná metóda. Nasledujúci príkaz vytvorí tabuľku v databáze MyDB obsahujúcu predvolené hodnoty pre oba stĺpce, stĺpec A (typu char) a stĺpecB (typu int):

VYTVORIŤ TABUĽKU MyTable

(stĺpecA char(15) NULL DEFAULT "ks",

columnB int NULL DEFAULT 0)

Predvolená hodnota "pcs" pre stĺpec columnA je kompatibilná s typom údajov char daného stĺpca a predvolená hodnota 0 pre stĺpecB je kompatibilná s typom údajov int. Ak pri vkladaní nového riadka do tabuľky nie je určená špecifická hodnota pre jeden alebo oba stĺpce, použije sa príslušná predvolená hodnota. Jediným spôsobom, ako týmto stĺpcom priradiť hodnotu NULL, je teda explicitne vložiť hodnotu NULL. Hodnoty Null sú platné, pretože atribút NULL je zadaný pre oba stĺpce. Ak boli stĺpce definované ako NOT NULL, potom nemôžete explicitne vložiť hodnotu NULL.

Obmedzenie PRIMÁRNY KĽÚČ sa používa na určenie primárneho kľúča tabuľky, čo je stĺpec alebo množina stĺpcov, ktoré jednoznačne identifikujú riadok tabuľky. Pretože primárny kľúč identifikuje riadok, zodpovedajúci stĺpec nikdy nebude obsahovať hodnotu NULL. Ak definujete obmedzenie PRIMARY KEY pre množinu stĺpcov, toto obmedzenie určuje, že kombinácia hodnôt pre tieto stĺpce musí byť jedinečná pre každý riadok. Obmedzenie PRIMARY KEY nepovoľuje duplicitné hodnoty. Ak je k stĺpcu alebo množine stĺpcov priradené obmedzenie PRIMARY KEY, potom sa v tomto stĺpci alebo stĺpcoch primárneho kľúča automaticky vytvorí jedinečný index. Tabuľka môže mať iba jedno obmedzenie PRIMARY KEY. Stĺpec s atribútom IDENTITY je vhodný pre primárny kľúč. Nasledujúci príkaz T-SQL je jedným zo spôsobov, ako zadať stĺpec SSN ako primárny kľúč pri definovaní tabuľky.

VYTVORIŤ TABUĽKU zákazníka

midinit char(1) NULL,

last_name char(20) NOT NULL,

Custom_phone char(10) NULL)

Prípadne môžete toto obmedzenie pomenovať pridaním kľúčového slova CONSTRAINT. Ak chcete k obmedzeniu PRIMARY KEY priradiť názov PK_SSN, použite nasledujúci príkaz:

VYTVORIŤ TABUĽKU zákazníka

(first_name char(20) NOT NULL,

midinit char(1) NULL,

last_name char(20) NOT NULL,

SSN char(11) OBMEDZENIE PK_SSN PRIMÁRNY KĽÚČ,

cust_phone char(10) NULL)

Obmedzenie PRIMARY KEY môžete zadať aj po zadefinovaní všetkých stĺpcov v tabuľke. Pri použití tejto syntaxe musí byť názov stĺpca uzavretý v zátvorkách a špecifikovaný za klauzulou CONSTRAINT, ako je uvedené v nasledujúcom príkaze:

VYTVORIŤ TABUĽKU zákazníka

(first_name char(20) NOT NULL,

midinit char(1) NULL,

last_name char(20) NOT NULL,

cust_phone char(10) NULL,

OBMEDZENIE PRIMÁRNY KĽÚČ PK_SSN (SSN))

UNIKÁTNE obmedzenie zabezpečuje, že v stĺpci alebo skupine stĺpcov nie sú povolené žiadne duplicitné hodnoty; inými slovami, je zabezpečená jedinečnosť hodnôt v tomto stĺpci alebo skupine stĺpcov. Na podporu tejto jedinečnosti SQL Server štandardne vytvára jedinečný index v stĺpci alebo stĺpcoch špecifikovaných v obmedzení UNIQUE. Obmedzenie UNIQUE možno použiť na ľubovoľný stĺpec, ktorý nie je súčasťou obmedzenia PRIMARY KEY. Obmedzenie UNIQUE je možné použiť v stĺpcoch, ktoré povoľujú hodnoty null, zatiaľ čo obmedzenia PRIMARY KEY nie je možné v takýchto stĺpcoch použiť. Na stĺpec s obmedzením UNIQUE možno odkazovať obmedzením FOREIGN KEY. Na jednu tabuľku možno nastaviť viacero obmedzení UNIQUE, pokiaľ celkový počet indexov pre túto tabuľku nepresiahne 250 indexov.

Ak chcete vytvoriť UNIQUE obmedzenie pre tabuľku pomocou T-SQL, použite príkaz CREATE TABLE. Napríklad nasledujúci príkaz vytvorí tabuľku zákazníkov s obmedzením UNIQUE v stĺpci SSN ako index:

VYTVORIŤ TABUĽKU zákazníka

(first_name char(20) NOT NULL,

midinit char(1) NULL,

last_name char(20) NOT NULL,

SSN char(11) NOT NULL UNIQUE CLUSTERED,

cust_phone char(10) NULL)

CHECK obmedzenie sa používa na obmedzenie množiny povolených hodnôt pre stĺpec na určité hodnoty. Hodnoty, ktoré sa používajú pri vkladaní do stĺpca alebo aktualizácii stĺpca, sa kontrolujú podľa pravdivosti (hodnota TRUE) booleovskej podmienky vyhľadávania špecifikovanej v obmedzení. Ak by sme napríklad chceli obmedziť rozsah možných hodnôt povolených pre stĺpec ceny v tabuľke položiek na hodnotu medzi 0,01 USD a 500,00 USD, použili by sme nasledujúce vyhlásenie:

CREATE TABLE položky

(názov položky char(15) NOT NULL,

itemid smallint NOT NULL IDENTITY(1,1),

cena smallmoney NULL,

item_desc varchar(30) NOT NULL DEFAULT "none",

OBMEDZENIE PK_ itemid PRIMARY KEY (itemid),

KONTRAINT CK_price CHECK (cena >=0,01 A cena<= 500.00))

Vytváranie a úprava obmedzení pomocou Management Studio

Ak chcete vytvoriť tabuľku, rozbaľte priečinok servera a priečinok databázy v ľavom paneli Management Studio, kliknite pravým tlačidlom myši na priečinok Tabuľky a potom v kontextovej ponuke vyberte položku Nová tabuľka. Ak chcete zobraziť okno Návrh tabuľky pre existujúcu tabuľku, najskôr kliknite na priečinok Tabuľky, kliknite pravým tlačidlom myši na názov tabuľky v pravom paneli a potom v kontextovej ponuke vyberte položku Návrh tabuľky.

Na označenie, či použiť alebo nie nulové hodnoty v ľubovoľnom stĺpci jednoducho začiarknite alebo zrušte začiarknutie príslušného políčka v stĺpci Povoliť nuly v okne Tabuľka návrhu. Túto možnosť môžete nastaviť pri vytváraní tabuľky alebo pri jej úprave.

Na vytvorenie alebo úpravu UNIKÁTNE obmedzenie pomocou Management Studio postupujte podľa týchto krokov:

1. Na paneli nástrojov okna Design Table kliknite na tlačidlo Indexy/Kľúče.

  1. Zobrazí sa nasledujúce okno, ktoré vám umožní vytvárať, upravovať a odstraňovať obmedzenia spojené s primárnymi a jedinečnými kľúčmi

Vyberte názvy stĺpcov, ktoré chcete zahrnúť do obmedzenia, a definujte preň vlastnosti.

Môžeš sa opýtať Obmedzenie PRIMÁRNY KĽÚČ jeden stĺpec alebo viacero stĺpcov. Tento stĺpec alebo stĺpce musia jednoznačne identifikovať každý riadok v tabuľke. Ak chcete nastaviť obmedzenie PRIMARY KEY, postupujte takto:

  1. V okne Návrhová tabuľka vyberte stĺpec kliknutím na jednu z buniek v jeho riadku. (Viac stĺpcov môžete vybrať tak, že podržíte kláves Ctrl a kliknete na sivé bunky naľavo od názvov stĺpcov.)

  1. Kliknite pravým tlačidlom myši na jeden z vybratých stĺpcov a z kontextovej ponuky vyberte položku Nastaviť primárny kľúč. Naľavo od stĺpcov, ktoré ste definovali pre primárny kľúč, sa zobrazí obrázok malého kľúča.
  2. Ak potrebujete presunúť obmedzenie PRIMARY KEY do iného stĺpca, jednoducho nastavte tento nový stĺpec ako primárny kľúč. Nie je potrebné, aby ste najprv explicitne vymazali pôvodný primárny kľúč – SQL Server vymaže a znova vytvorí index PRIMARY KEY za vás. Index PRIMARY KEY môžete upraviť aj v okne Vlastnosti. Vaše zmeny sa prejavia po uložení práce kliknutím na tlačidlo Uložiť na paneli s nástrojmi.

Na vytvorenie CHECK obmedzenie pomocou okna Design Table otvorte toto okno pre tabuľku, s ktorou chcete pracovať, a postupujte podľa nižšie uvedených krokov.

1. Kliknite pravým tlačidlom myši na okno Tabuľka návrhov az kontextovej ponuky vyberte Vlastnosti, aby sa zobrazilo okno Vlastnosti. Kliknite na kartu Check Constraints a kliknite na tlačidlo New pre tabuľku.

3. Všimnite si tri začiarkavacie políčka v spodnej časti tohto okna. Zaškrtnutie políčka Skontrolovať existujúce údaje pri vytváraní znamená, že údaje existujúcej tabuľky budú skontrolované vzhľadom na obmedzenie KONTROLA, a ak sa nezhodujú, obmedzenie sa nevytvorí. Začiarknutie políčka Vynútiť obmedzenie pre replikáciu znamená, že toto obmedzenie bude skontrolované pri replikácii údajov. Začiarknutím políčka Vynútiť obmedzenie pre VLOŽENIA a AKTUALIZÁCIE jednoducho znamená, že obmedzenie KONTROLA bude povolené. Ak toto políčko nezaškrtnete, tak sa toto obmedzenie vytvorí, ale nebude aktivované, t.j. nebude mať žiadny účinok.

4. Kliknite na tlačidlo Zavrieť a potom kliknite na tlačidlo Uložiť, aby ste uložili nové obmedzenie. Ak chcete upraviť obmedzenie CHECK, použite kartu Check Constraint na zmenu názvu obmedzenia, výrazu obmedzenia a príznakov.

Záložku Skontrolovať obmedzenia môžete použiť aj na odstránenie obmedzenia KONTROLA výberom názvu obmedzenia, ktoré chcete odstrániť, zo zoznamu Vybrané obmedzenie a kliknutím na tlačidlo Odstrániť.

Laboratórne práce je určený na 3 hodiny triednických hodín a spočíva v preštudovaní teoretického materiálu a získaní praktických zručností pri definovaní databázových tabuliek, vytváraní pravidiel, obmedzení, predvolených nastavení, vlastných dátových typov, indexov. Dodanie laboratórnych prác spočíva v zodpovedaní kontrolných otázok a predvedení individuálnej úlohy na PC.

  1. Názov a účel práce
  2. Individuálna úloha
  3. Skripty na vytváranie vlastného dátového typu a databázových tabuliek v súlade s individuálnou úlohou

testovacie otázky

  1. Zoznam podporovaných typov údajov?
  2. Vlastný typ údajov. Účel a spôsoby tvorby?
  3. Spôsoby, ako definovať tabuľky?
  4. Priradenie predvolených nastavení, pravidiel a obmedzení?
  5. Zoznam podporovaných predvolených nastavení, obmedzení, pravidiel?
  6. Metódy priraďovania predvolených hodnôt, obmedzení, pravidiel
  7. Čo je to nulová hodnota?
  8. vlastnosť stĺpca IDENTITY?

n. (pzegt (časy tlače (K, h))

Vloží hodnotu h do objektu n na pozíciu, označenú klávesom 1c.

Ak už existuje ieuportovateľná hodnota zodpovedajúca kľúču 1c, potom sa nezmení. Vráti objekt typu pamflet::stringtor, boo1>, ktorého prvý komponent ukazuje na prvok s daným kľúčom a druhý označuje, či bol vložený nový prvok. Venujte pozornosť tomu, že podľa správneho valčíka pa1 r generuje objekt typu pa(r sk, h “, ktorý sa po spustení funkcie snzegm prevedie na objekt typu raz r

p.uzpb (1s)

Vráti pterátor, ktorý odkazuje na prvok (ak existuje) preklenutý kľúčom 1c. Ak takýto prvok neexistuje, vráti hodnotu n.enb0 Generuje objekt tyne krát r, ktorý smermituje kľúč a hodnotu, s ktorou je tento upoch zlúčený, v pozícii označenej iterátorom me. Teda prvok me->r(gm je typu conn k a prgl nastavuje kľúč a prvok me->jesnb je typu y a prgl nastavuje hodnotu zodpovedajúcu tomuto kľúču

B.Z. Algoritmy

Knižnica plemenníc obsahuje mnoho generických algoritmov, ktoré sú napísané s ohľadom na iterátory; algoritmy sa tak stávajú nezávislými od špecifických dátových štruktúr, s ktorými pracujú, a od typov ich členov. Všimnite si, že asociatívne kontajnery majú iterátory, ktoré odkazujú na zložené typy, ako je trieda pa(r. Slepo si použitie týchto algoritmov s asociatívnymi kontajnermi vyžaduje starostlivý návrh.

Väčšina algoritmov sa zameriava na sekvencie ohraničené dvojicou iterátorov, pričom prvý iterátor ukazuje na prvý prvok a druhý ukazuje na oblasť pamäte umiestnenú za posledným prvkom tejto položky. Pokiaľ nie je uvedené inak, všetky algoritmy sú definované v hlavičke.

Zahŕňa deklarácie všeobecných algoritmov

accppite(b, e, t)

akceptovať (b, e, t, r)

Deflované v názve. Vytvorí dočasný objekt o1y rovnakého typu a s rovnakou hodnotou ako objekt m. Pre ľubovoľný vstup iterátora me v rozsahu (b, e) vypočíta ady" = aby + *mt alebo aby" = T(ab) ", *3m), v závislosti od formy funkcie accppplate, ktorá bola volaná. Výsledkom je kópia objektu aby. Upozorňujeme, že keďže operátor "+" môže byť preťažený, môže fungovať aj prvá forma funkcie accpplyate na nezabudovaných typoch. typ aritmetickéhoguskill Napríklad môžeme použiť algoritmus Assppp1ate na zreťazenie všetkých reťazcov v kopírke

B.Z. Algoritmy

b(na~y sevgsp(b, e, c)

Vráti hodnotu typu boo1 označujúcu, či hodnota c patrí do (triedenej) pastlglature ohraničenej jednosmernými iterátormi b a e

kopírovať (b, e, b)

Skopíruje hodnoty sekvencie zadanej vstupnými iterátormi b a e do cieľovej oblasti nazývanej iterátor d. Vráti hodnotu, ktorá určuje pozíciu za posledným prvkom prijímača

epv1(b, e, b2)

epv1(b, e, b2, p)

Exponenciálna hodnota typu bao1, udávajúca, či sa prvky rádovej veľkosti špecifikované vstupnými iterátormi b a e rovnajú prvkom postupnosti rovnakej veľkosti, ktorej začiatok je daný vstupným iterátorom b2. Používa predikát p na testovanie alebo operátor "=", ak predikát p nie je zadaný.

H 11(b, e, c)

Nastaví prvky slepoty dané iterátormi psov b a e rovné hodnote c. Vráti hodnotu r(nb(b, e, c)

r(n0 (r(b, e, p)

Vráti iterpore označujúce prvý iterátor hodnoty c alebo iterátor ukazujúci na prvok, pre ktorý platí previkát p (ak je zadaný) v postupnosti danej iterátormi b a e. Vráti e, ak tento prvok neplatí existujú

1ex(condgvr sv1 conpvge(b, e, b2, e2)

1ex(condgvp(c1 conp(b, e, b2, e2, p)

Vráti boolovu hodnotu označujúcu, či je postupnosť prvkov v rozsahu [b, e) menšia ako postupnosť prvkov v rozsahu [b2, e2). Na porovnanie prvkov použite predikát p alebo operátor "

pvc(s1, s2)

Vráti väčšie (dve funkcie pvc) alebo nižšie (v zmysle funkcií bnn) hodnoty dané argumentmi c1 a c2, ktoré majú oba typ pvc pdig e1epeps(b.e) nmp e1epeps(b, e) Vracia iterátor smerujúci na najväčší (najmenší) ) prvok v pastelovosti danej jednosmernými hernými prvkami b nie je

Príloha B Štandardná knižnica(krátka recenzia)