TTY Ohjelmointi I & II C++-kirjastoreferenssi versio 2.2



Samankaltaiset tiedostot
Olio-ohjelmointi Syntaksikokoelma

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Osoitin ja viittaus C++:ssa

Ohjelmointi 1 Taulukot ja merkkijonot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Java-kielen perusteet

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl;

12 Mallit (Templates)

OHJ-1150 Ohjelmointi II

Olio-ohjelmointi 2. välikoe HYV5SN

STL:n uudistukset. Seppo Koivisto TTY Ohjelmistotekniikka

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

Java-kielen perusteet

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

13 Operaattoreiden ylimäärittelyjä

Osoittimet. Mikä on osoitin?

int puts(char *buff) Kirjoittaa puskurissa buff \0 :lla päätetyn merkkijonon standarditulostukseen. Formatoitu konsoli-i/o Tiedostot

7. Näytölle tulostaminen 7.1

Tietueet. Tietueiden määrittely

Lyhyt kertaus osoittimista

Tietotyypit ja operaattorit

ITKP102 Ohjelmointi 1 (6 op)

Operaattoreiden uudelleenmäärittely

ITKP102 Ohjelmointi 1 (6 op)

C++ -ohjelmointikieli vs. muut kielet

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Ohjelmoinnin perusteet Y Python

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

C++ -ohjelmointikieli vs. muut kielet C C++ C vs. C++: Hello World. C++ -ohjelman kääntämisen vaiheet kuin C-kieli

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

etunimi, sukunimi ja opiskelijanumero ja näillä

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Algoritmit 1. Luento 7 Ti Timo Männikkö

Sisältö. 22. Taulukot. Yleistä. Yleistä

Taulukot. Jukka Harju, Jukka Juslin

Algoritmit 2. Luento 7 Ti Timo Männikkö

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

3. Muuttujat ja operaatiot 3.1

Muuttujien roolit Kiintoarvo cin >> r;

Standardi mallikirjasto

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Olio-ohjelmointi Geneerisyys. 1. Johdanto

Algoritmit 2. Luento 3 Ti Timo Männikkö

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset


Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

18. Abstraktit tietotyypit 18.1

Tietorakenteet ja algoritmit

17. Javan omat luokat 17.1

Tieto- ja tallennusrakenteet

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

20. Javan omat luokat 20.1

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Esimerkki luokkahierarkiasta: C++-kielen IOstream-kirjasto

Kääntäjän virheilmoituksia

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Ohjelmoinnin perusteet Y Python

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

Rakenteiset tietotyypit Moniulotteiset taulukot

Ohjelmoinnin peruskurssi Y1

Algoritmit 2. Luento 2 To Timo Männikkö

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

1. Mitä tehdään ensiksi?

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Algoritmit 1. Luento 5 Ti Timo Männikkö

13. Loogiset operaatiot 13.1

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Tietorakenteet ja algoritmit

Luku 3. Listankäsittelyä. 3.1 Listat

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Algoritmit 2. Luento 3 Ti Timo Männikkö

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

Osoittimet ja taulukot

Harjoitus 4 (viikko 47)

Sisältö. 2. Taulukot. Yleistä. Yleistä

Harjoitustyö: virtuaalikone

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Merkkijonot ja C++ Antti-Juhani Kaijanaho. 5. maaliskuuta Vanhojen C++-kääntäjien käyttäjät, huomio! 2 Merkkijonojen perusteet

Transkriptio:

TTY Ohjelmointi I & II C++-kirjastoreferenssi versio 2.2 Copyright 2002 2009 Ari Suntioinen aps@cs.tut.fi #include <cstdlib> int EXIT_SUCCESS main-funktion paluuarvo int EXIT_FAILURE ok- ja virhetilanteessa. int RAND_MAX Katso rand( ). kokonaislukutyyppi abs(kokonaislukutyyppi) Itseisarvo tyypeistä int ja long int. void exit(int) Ohjelman keskeytys exit-statuksena int. void srand(unsigned) Satunnaislukugeneraattorin alustus siemenluvulla unsigned. int rand( ) Satunnaisluku väliltä 0 RAND_MAX #include <cctype> int isalpha(char) Onko char kirjainmerkki A Z tai a z. int isdigit(char) Onko char numeromerkki 0 9. int isspace(char) Onko char sanaerotin, \n, \r tai \t. int iscntrl(char) Onko char kontrollimerkki. int isprint(char) Onko char tulostuva merkki, siis käytännössä sama kuin!iscntrl(char ) int ispunct(char) Onko char välimerkki eli tulostuva merkki, joka ei ole kirjain, numero tai sanaerotin. int islower(char) Onko char pieni kirjain. int isupper(char) Onko char iso kirjain. char tolower(char) char muutettuna pieneksi kirjaimeksi, jos mahdollista. char toupper(char) char muutettuna isoksi kirjaimeksi, jos mahdollista. Funktioiden isalpha, islower, isupper, tolower ja toupper toiminta skandinaavisilla kirjaimilla riippuu asetuksista. Oletusarvoisesti eivät toimi. #include <cmath> double abs(double) double double sqrt(double) double double pow(double 1, double 2 ) double double 2 1 double exp(double) e double double log(double) ln double double log10(log) log 10 double double sin(double) sin double double cos(double) cos double double tan(double) tan double double asin(double) sin -1 double double acos(double) cos -1 double double atan(double) tan -1 double double ceil(double) Pienin kokonaisarvo joka ei ole pienempi kuin double. double floor(double) Suurin kokonaisarvo joka ei ole suurempi kuin double. Trigonometrisissa funktioissa kulmat esitetään ja palautetaan radiaaneina. #include <limits> numeerinen_tyyppi numeric_limits<numeerinen_tyyppi>::min() Pienin mahdollinen arvo, joka voidaan esittää tietotyypillä numeerinen_tyyppi. numeerinen_tyyppi numeric_limits<numeerinen_tyyppi>::max() Suurin mahdollinen arvo, joka voidaan esittää tietotyypillä numeerinen_tyyppi. #include <string> string: :size_type Tietotyyppi jolla voidaan esittää merkkijonojen pituuksia ja indeksejä. string s Alustettu tyhjäksi. string s(string) Alustettu samaksi kuin string. string s(const char * ) Alustus C-merkkijonolla. string s(int, char) int merkkiä pitkä merkkijono, jonka kaikki merkit alustettu arvoon char. string: :iterator Nämä ja muut iteraattorityypit käyttäytyvät kuten string: :const_iterator kohdassa Iteraattorit on esitetty. string: :size_type string: :npos find-funktioiden paluuarvo, mikäli etsittyä alimerkkijonoa ei löydy. string[int] string 1 = string 2 string = char string 1 += string 2 string += char string 1 + string 2 string + char char + string string 1 == string 2 string 1! = string 2 string 1 < string 2 string 1 <= string 2 string 1 > string 2 string 1 >= string 2 ostream << string istream >> string Merkkijonon indeksointi kohdasta int. Jäsenfunktio at(int ) on yleensä turvallisempi vaihtoehto. void swap(string 1, string 2 ) Vaihda muuttujien string 1 ja string 2 arvot. istream getline(istream, string) istream getline(istream, string, char) Lue syötevirrasta istream rivillinen tekstiä tai kunnes tulee vastaan merkki char ja talleta luettu teksti merkkijonoon string. char at(int) Merkkijonon indeksointi kohdasta int. Voi olla sijoitusoperaattorin vasemmalla puolella. string: :size_type length( ) Merkkijonon pituus. bool empty( ) true, jos merkkijono on tyhjä, false jos ei. Tyhjentää merkkijonon. string erase( ) Tyhjentää merkkijonon. string erase(int) Tuhoaa kaikki merkit alkaen indeksistä int. string erase(int 1, int 2 ) Tuhoaa int 2 merkkiä alkaen merkistä int 1. string append( string) Liittää merkkijonon string merkit loppuun. string insert(int, string) Lisää merkkijonon string merkit kohtaan int. string replace(int 1, int 2, string) Korvaa kohdasta int 1 alkaen int 2 merkkiä merkkijonolla string. string substr(int) Palauttaa lopun merkkijonon alkaen indeksistä int. string substr(int 1, int 2 ) Palauttaa indeksistä int 1 alkavan int 2 pituisen alimerkkijonon. const char* c_str( ) Konversio C-merkkijonoksi. string: :size_type find(char, int =0) string: :size_type find(string, int =0) Etsitään merkkiä char tai alimerkkijonoa string alkaen indeksistä int. Paluuarvo löytyneen kohdan indeksi tai string: :npos, jos ei löytynyt. string: :size_type rfind(...) Kuten find edellä, mutta etsintä tapahtuu merkkijonon lopusta alkua kohti. iteraattori begin( ) Nämä ja muut iteraattorifunktiot toimivat kuten iteraattori end( ) kohdassa Iteraattorit on esitetty.

#include <iostream> Standardivirrat cin cout cerr #include <fstream> Rakentajat ifstream muuttuja Ei alustusta. Katso open( ). ifstream muuttuja(const char * ) Avataan tiedosto luettavaksi. ofstream muuttuja Ei alustusta. Katso open( ). ofstream muuttuja(const char * ) Avataan tiedosto kirjoitettavaksi. Tyhjennetään jos olemassa jo entuudestaan. fstream muuttuja Ei alustusta. Katso open( ). fstream muuttuja(const char *, avaustapa) Avataan tiedosto. Se mitä tiedostolle voi tehdä, riippuu parametrista avaustapa. Katso kohdasta. ios::in ios::out ios::app ios::trunc ios::binary Avataan luettavaksi. Avataan kirjoitettavaksi. Kaikki kirjoittaminen tapahtuu tiedoston loppuun. Tyhjennetään tiedosto, jos ennestään olemassa. Tiedosto on binääritiedosto. Ei merkitystä UNIX-systeemeissä, mutta esim. Windows erittelee teksti- ja binääritiedostot. avaustapa voi olla myös mikä tahansa järkevä yhdistelmä edellisiä. Yhdistäminen tapahtuu binäärisellä tai-operaattorilla. Esimerkiksi ios::in ios::out ios::binary avaa tiedoston sekä luettavaksi että kirjoitettavaksi binäärimuodossa. void open(const char * ) void open(const char *, avaustapa) Tiedoston avaaminen. Tilanteissa joissa rakentaja ei riitä. void close( ) Sulkee tiedoston/tietovirran. #include <sstream> Rakentajat istringstream muuttuja(string) Mahdollistaa merkkijonosta string lukemisen tietovirran avulla. ostringstream muuttuja Virtaan tehtyjen tulostusoperaatioiden tulos saadaan merkkijonona. void str(string) string str( ) #include <iomanip> Tulostusasun muokkaus Asettaa virran luku- tai kirjoitusmerkkijonon arvoon string. Palauttaa luku- tai kirjoitusmerkkijonon sisällön. ostream << left Tulostus kentän vasempaan laitaan. ostream << right Tulostus kentän oikeaan laitaan. ostream << setw(int ) Tulostuskentän leveydeksi int. ostream << setfill(char ) Tulostuskentän mahdollinen ylimääräinen tila täytetään merkillä char. ostream << setprecision( int ) Reaalilukujen tulostustarkkuudeksi int. ostream << fixed setprecision(int ) -ohjeessa int tulkitaan desimaalien lukumääräksi. Yhteistä kaikille syötevirroille streampos int EOF ios::beg ios::cur ios::end istream Tietotyyppi lukukohtien esittämiseen. Joidenkin funktioiden paluuarvo, kun tietovirta on luettu loppuun. Katso kohta jäsenfunktiot. seekg(int, seekpos) -kutsussa seekpos-parametrin mahdolliset arvot. Kertoo tulkitaanko int-parametri suhteellisena tiedoston alkuun, tämänhetkiseen lukukohtaan vai virran loppuun. Tietovirtaa voi käyttää sinällään ehtolausekkeena. "Tosi", jos viimeisin virralle tehty operaatio onnistui.! istream Edellisen komplementti. istream >> muuttuja Luetaan arvo virrasta istream muuttujaan muuttuja. istream getline(istream, string) istream getline(istream, string, char) Katso kohdasta #include <string> int get( ) Lukee ja palauttaa yhden merkin virrasta. Virran loputtua paluuarvo EOF. istream get(char) Lukee virrasta yhden merkin parametriin char. int peek( ) Kuten get( ), mutta merkkiä ei poisteta virrasta. istream ignore(int) Hyppää yli virran int seuraavaa merkkiä. istream ignore(int, char) Hyppää yli virran int seuraavaa merkkiä tai kunnes vastaan tulee ensimmäinen merkki char. bool eof( ) true jos virtaa on yritetty lukea ohi lopun. Asettaa virran normaaliin (ehkä) lukukelpoiseen tilaan virhetilanteen jälkeen. streampos tellg( ) Palauttaa tämänhetkisen lukukohdan. istream seekg( streampos) Asettaa lukukohdan paikkaan streampos. istream seekg( int, seekpos) Asettaa lukukohdan paikkaan int suhteessa parametriin seekpos. Katso kohta vakiot. Yhteistä kaikille tulostusvirroille streampos ios::beg ios::cur ios::end ostream Tietotyyppi kirjoituskohtien esittämiseen. seekp(int, seekpos) -kutsussa seekpos-parametrin mahdolliset arvot. Kertoo tulkitaanko int-parametri suhteellisena tiedoston alkuun, tämänhetkiseen kirjoituskohtaan vai virran loppuun. Tietovirtaa voi käyttää sinällään ehtolausekkeena. "Tosi", jos viimeisin virralle tehty operaatio onnistui.! ostream Edellisen komplementti. ostream << arvo Kirjoita arvo virtaan ostream. ostream << endl Kirjoita rivinvaihto virtaan ostream. ostream put(char) Kirjoittaa virtaan merkin char. Asettaa virran normaaliin (ehkä) kirjoituskelpoiseen tilaan virhetilanteen jälkeen. streampos tellp( ) Palauttaa tämänhetkisen kirjoituskohdan. ostream seekp(streampos) Asettaa kirjoituskohdan paikkaan streampos. ostream seekp(int, seekpos) Asettaa kirjoituskohdan paikkaan int suhteessa parametriin seekpos. Katso kohta vakiot.

Iteraattorit Jokaiselle STL-säiliölle on määritelty joukko iteraattorityyppejä, jotka mahdollistavat rakenteen läpikäynnin ja yksittäisiin alkioihin viittaamisen. säiliötyyppi<alkiotyyppi>: :iterator säiliötyyppi<avaintyyppi, infotyyppi>: :iterator Iteraattorit, jotka mahdollistavat iteraattorin osoittaman informaation modifioinnin, sikäli kun se on mielekästä (ei set-rakenteen eikä map-rakenteen avainkentän). säiliötyyppi<alkiotyyppi>: :const_iterator säiliötyyppi<avaintyyppi, infotyyppi>: :const_iterator Iteraattorit, jotka eivät salli informaation modifiointia: voidaan käyttää const-tietorakenteilla. säiliötyyppi<alkiotyyppi>: :reverse_iterator säiliötyyppi<avaintyyppi, infotyyppi>: :reverse_iterator säiliötyyppi<alkiotyyppi>: :const_reverse_iterator säiliötyyppi<avaintyyppi, infotyyppi>: :const_reverse_iterator Käänteisiteraattoreiden idea sama kuin edellä, mutta ne käyvät säiliön alkiot läpi lopusta alkuun-järjestyksessä. iteraattorien luontiin Kaikki STL-säiliöt tarjoavat jäsenfunktiot, joiden avulla voidaan luoda iteraattori, joka osoittaa säiliön ensimmäiseen alkioon tai säiliön loppuun. iteraattori begin( ) Iteraattori säiliön alkuun. iteraattori end( ) Iteraattori säiliön loppuun. käänteisiteraattori rbegin( ) Käänteisiteraattori säiliön loppuun. käänteisiteraattori rend( ) Käänteisiteraattori säiliön alkuun. Jos halutaan, että säiliöön iteraattorin avulla tehdyt muutokset lisäävät alkioita sen sijaan, että muutetaan vanhoja arvoja, voidaan käyttää lisäysiteraattoreita. lisäysiteraattori front_inserter(säiliö) Alkiot lisätään säiliön säiliö alkuun. lisäysiteraattori back_inserter(säiliö) Alkiot lisätään säiliön säiliö loppuun. lisäysiteraattori inserter(säiliö, iteraattori ) Lisäys säiliön säiliö kohtaan, johon iteraattori osoittaa. Huom! Lisäysiteraattoreita luovat funktiot eivät ole jäsenfunktioita. jotka ovat yhteisiä STL-säiliöitä käsitteleville iteraattoreille. * iteraattori Arvoksi evaluoituu tietoalkio, johon iteraattori osoittaa. Voi olla sijoitusoperaattorin vasen operandi, mikäli se on järkevää (ei set- eikämap-rakenteen avainkenttä). iteraattori > kenttä Jos iteraattori osoittaa struct- taiclass-tyyppiseen alkioon, sen kenttä-osatietoon päästään suoraan käsiksi. Voi olla sijoituksen kohde, mikäli se on järkevää. iteraattori 1 = iteraattori 2 Kopioi iteraattorin arvon toiseen saman tyyppiseen iteraattoriin. ++iteraattori Siirtää iteraattorin osoittamaan säiliön seuraavaan iteraattori tai edelliseen alkioon. iteraattori 1 == iteraattori 2 Vertailee osoittavatko iteraattorit samaan iteraattori 1! = iteraattori 2 vai eri alkioon säiliön sisällä. Lisäksi seuraavat operaattorit toimivat vector- jadeque-rakenteita käsitteleville iteraattoreille ja käytettäessä osoittimia iteraattorien tavoin. iteraattori += int Siirtää iteraattorin iteraattori osoittamaan iteraattori = int int alkiota eteenpäin/taaksepäin. iteraattori + int Arvoksi evaluoituu iteraattori, joka osoittaa int alkiota iteraattori int eteenpäin/taaksepäin iteraattorista iteraattori. iteraattori 1 iteraattori 2 Kuinka kaukana iteraattorien iteraattori 1 ja iteraattori 2 osoittamat alkiot ovat toisistaan. iteraattori 1 < iteraattori 2 Iteraattorien iteraattori 1 ja iteraattori 2 osoittamien iteraattori 1 > iteraattori 2 alkioiden sijainnin (indeksi) vertailuoperaattorit. iteraattori 1 <= iteraattori 2 iteraattori 1 >= iteraattori 2 #include <vector> vector<alkiotyyppi>: :size_type Tietotyyppi jolla voidaan esittää vektoreiden kokoja. vector<alkiotyyppi> muuttuja Tyhjä vektori. vector<alkiotyyppi> muuttuja(vector<alkiotyyppi>) Alustus toisella vektorilla. vector<alkiotyyppi> muuttuja(int) Koko int alkiota, jotka alustettu oletusrakentajalla. vector<alkiotyyppi> muuttuja(int, alkiotyyppi) Koko int alkiota, joiden kaikkien arvona alkiotyyppi. vector<alkiotyyppi> muuttuja(iteraattori b, iteraattori e ) Alustus jossain toisessa säiliössä avoimella välillä [iteraattori b, iteraattori e ) olevilla arvoilla. vector[int] Vektorin indeksointi kohdasta int. Jäsenfunktio at(int ) on yleensä turvallisempi vaihtoehto. vector 1 = vector 2 Sijoitus. vector 1 == vector 2 Vertailu. vector 1! = vector 2 vector 1 < vector 2 vector 1 <= vector 2 vector 1 > vector 2 vector 1 >= vector 2 alkiotyyppi at(int) Vektorin indeksointi kohdasta int. Voi olla sijoitusoperaattorin vasemmalla puolella. alkiotyyppi front( ) Ensimmäinen alkio. alkiotyyppi back( ) Viimeinen alkio. vector<alkiotyyppi>: :size_type size( ) Alkoiden lukumäärä. bool empty( ) true jos vektori on tyhjä, muutoin false. void swap(vector<alkiotyyppi>) Vaihtaa kahden vektorin sisällöt keskenään. void push_back(alkiotyyppi) Arvo alkiotyyppi lisätään vektorin viimeiseksi alkioksi. Vektorin koko kasvaa yhdellä. void pop_back( ) Vektorin viimeinen alkio poistetaan. Vektorin koko pienenee yhdellä. Tyhjennetään vektori kaikista alkioista. void resize(int) Kasvattaa tai pienentää vektorin alkioiden lukumääräksi int. Jos koko kasvaa, uudet alkiot on alustettu oletusrakentajalla. void resize(int, alkiotyyppi) Kuten edellinen, mutta mahdolliset lisätyt alkiot on alustettu arvolla alkiotyyppi. iteraattori p insert(iteraattori i, alkiotyyppi) Lisää arvon alkiotyyppi parametrin iteraattori i osoittamaan paikkaan. Vektorin koko kasvaa yhdellä. Paluuarvo iteraattori p osoittaa lisättyyn alkioon. void insert(iteraattori i, int, alkiotyyppi) Lisää int kappaletta arvoja alkiotyyppi kohtaan iteraattori i. Vektorin koko kasvaa parametrin int verran. void insert(iteraattori i, iteraattori b, iteraattori e ) Lisää kohtaan iteraattori i kaikki avoimella välillä [iteraattori b, iteraattori e ) olevat arvot. Vektorin koko kasvaa lisättyjen alkioiden lukumäärän verran. Huom! Tarkoitus on, että iteraattori b ja iteraattori e ovat iteraattoreita eri säiliöön kuin iteraattori i. iteraattori p erase(iteraattori i ) Poistaa vektorista alkion kohdasta iteraattori i. Vektorin koko pienenee yhdellä. Paluuarvo iteraattori p osoittaa poistettua alkiota seuranneeseen alkioon. iteraattori p erase(iteraattori b, iteraattori e ) Poistaa vektorista avoimella välillä [iteraattori b, iteraattori e ) olevat alkiot. Vektorin koko pienenee poistettujen alkioiden lukumäärän verran. Paluuarvo iteraattori p osoittaa poistettuja alkioita seuranneeseen alkioon.

#include <deque> deque<alkiotyyppi>: :size_type Tietotyyppi jolla voidaan esittää deque-tyyppisten deque<alkiotyyppi> muuttuja deque<alkiotyyppi> muuttuja(deque<alkiotyyppi>) deque<alkiotyyppi> muuttuja(int) deque<alkiotyyppi> muuttuja(int, alkiotyyppi) deque<alkiotyyppi> muuttuja(iteraattori b, iteraattori e ) Rakentajat analogisia vektorin rakentajien kanssa. Kaikki operaattorit, jotka toimivat vektorilla, toimivat deque-rakenteella. Kaikki jäsenfunktiot, jotka toimivat vektorilla, toimivat samoin deque-rakenteella. void push_front(alkiotyyppi) Arvo alkiotyyppi lisätään ensimmäiseksi alkioksi. Koko kasvaa yhdellä. void pop_front( ) Poistetaan ensimmäinen alkio. Koko pienenee yhdellä. #include <list> list<alkiotyyppi>: :size_type Tietotyyppi jolla voidaan esittää list-tyyppisten list<alkiotyyppi> muuttuja list<alkiotyyppi> muuttuja(list<alkiotyyppi>) list<alkiotyyppi> muuttuja(int) list<alkiotyyppi> muuttuja(int, alkiotyyppi) list<alkiotyyppi> muuttuja(iteraattori b, iteraattori e ) Rakentajat analogisia vektorin rakentajien kanssa. Kaikki operaattorit, jotka toimivat vector-jadeque-rakenteilla, toimivat myös listoilla, paitsi ettei listaa voi indeksoida [ int ]-operaattorilla. Kaikki jäsenfunktiot, jotka toimivat vector-jadeque-rakenteilla, toimivat listoilla, paitsi ettei listaa voi indeksoida at(int )-jäsenfunktiolla. void reverse( ) Kääntää listan alkiot takaperoiseen järjestykseen. void sort( ) Lajittelee listan alkiot kasvavaan järjestykseen. void sort(vertailufunktio) Lajittelee listan alkiot kasvavaan järjestykseen käyttäen alkioiden vertailuun funktiota vertailufunktio. void remove(alkiotyyppi) Poistaa listasta kaikki alkiot, joiden arvo on yhtäsuuri kuin alkiotyyppi. void remove_if(valintafunktio) Poistaa listasta alkiot, joille valintafunktio palauttaa true. #include <set> set<alkiotyyppi>: :size_type Tietotyyppi jolla voidaan esittää set-tyyppisten set<alkiotyyppi> muuttuja set<alkiotyyppi> muuttuja(set<alkiotyyppi>) set<alkiotyyppi> muuttuja(iteraattori b, iteraattori e ) Analogisia vektorin rakentajien kanssa. Kaikki operaattorit, jotka toimivat vector-jadeque-rakenteilla, toimivat myös set-rakenteella, paitsi ettei sitä voi indeksoida [ int ]-operaattorilla. set<alkiotyyppi>: :size_type size( ) Alkoiden lukumäärä. bool empty( ) true jos joukko on tyhjä, muutoin false. iteraattori find(alkiotyyppi) Tutkii kuuluuko arvo alkiotyyppi joukkoon. Paluuarvo on iteraattori, joka osoittaa löytyneeseen alkioon tai end(), jos arvo alkiotyyppi ei kuulu joukkoon. pair<iteraattori, bool> insert(alkiotyyppi) Yrittää lisätä arvon alkiotyyppi joukkoon. Paluuarvo on pari, jonka first-kenttä (iteraattori) osoittaa lisättyyn tai löytyneeseen alkioon ja second-kenttä (bool) ontrue, jos lisäys onnistui tai false, jos arvo alkiotyyppi kuului joukkoon jo ennestään. void insert(iteraattori b, iteraattori e ) Lisää joukkoon kaikki avoimella välillä [iteraattori b, iteraattori e ) olevat arvot. void erase(alkiotyyppi) Poistaa joukosta arvon alkiotyyppi. void erase(iteraattori) Poistaa joukosta alkion, johon iteraattori osoittaa. Poistaa joukosta kaikki alkiot. #include <map> map<avaintyyppi, infotyyppi>: :size_type Tietotyyppi map-rakenteiden kokojen esittämiseen. pair<avaintyyppi, infotyyppi> Tietotyyppi (struct) jossa kaksi kenttää: first joka on tyypiltään avaintyyppi ja second joka on tyypiltään infotyyppi. Käytetään map-rakenteeseen lisättävien avain-informaatio-parien esittämiseen ja käsittelyyn. map<avaintyyppi, infotyyppi> muuttuja Määrittelee map-muuttujan, jonka hakuavaimen tyyppi on avaintyyppi ja talletettavan tiedon tyyppi infotyyppi. map<avaintyyppi, infotyyppi> muuttuja(map<avaintyyppi, infotyyppi>) Kuten edellinen mutta muuttuja alustetaan toisella samantyyppisellä map-muuttujalla. pair<avaintyyppi, infotyyppi> make_pair(avaintyyppi f, infotyyppi s ) Funktio luo parin (struct), jonka first-kentän arvo on avaintyyppi f ja second-kentän arvo on infotyyppi s. Kaikki operaattorit, jotka toimivat vector- ja deque-rakenteilla, toimivat myös map-rakenteella, paitsi ettei sitä voi indeksoida [ int ]-operaattorilla alkion järjestysnumeroon perustuen (paitsi jos avaintyyppi sattuu olemaan int). map[avaintyyppi] Muuttujan map indeksointi hakuvaimella avaintyyppi. Arvoksi evaluoituu avaimeen sidottu tieto (tyypiltään infotyyppi). Voi olla sijoitusoperaattorin vasemmalla puolella: mahdollistaa yksinkertaisen alkioiden lisäämisen map-tyyppiseen muuttujaan. Huom! Lisää avaimen avaintyyppi aina rakenteeseen, silloinkin kun map[avaintyyppi] ei ole sijoituksen kohteena. map<avaintyyppi, infotyyppi>: :size_type size( ) Alkoiden lukumäärä. bool empty( ) true jos rakenne on tyhjä, muutoin false. Kaikki map-tyyppiä käsittelevät iteraattorit osoittavat aina pair<avaintyyppi, infotyyppi>-tyyppiseen pariin. iteraattori find(avaintyyppi) Etsii hakuavainta avaintyyppi map-rakenteesta. Jos avain löytyy, paluuarvona iteraattori hakuavaimen sisältävään pariin. Jos avainta ei löydy, paluuarvona on end(). pair<iteraattori, bool> insert(pair<avaintyyppi, infotyyppi>) Yrittää lisätä (avaintyyppi, infotyyppi )-parin map-rakenteeseen. Paluuarvo on pari, jonka first-kenttä (iteraattori) osoittaa lisättyyn tai löytyneeseen pariin ja second-kenttä (bool) ontrue, jos lisäys onnistui, false, jos hakuavain avaintyyppi oli rakenteessa ennestään. map<avaintyyppi, infotyyppi>::size_type erase(avaintyyppi) Poistaa parametrina annetun hakuavaimen avaintyyppi määräämän alkion rakenteesta. Paluuarvo kertoo poistettujen alkioiden lukumäärän (0 tai 1). void erase(iteraattori) Poistaa parametrin iteraattori osoittaman alkion. Tyhjentää map-rakenteen kaikista alkioista.

#include <algorithm> Ohjausfunktiot Useimmista algorithm-kirjaston funktioista on versio, jolle käyttäjä voi välittää funktioparametrina toimintaa ohjaavan apufunktion. bool valintafunktio(const alkiotyyppi&) Toimenpide suoritetaan vain niille säiliön alkioille, joille valintafunktio palauttaa true. bool vertailufunktio(const alkiotyyppi&, const alkiotyyppi&) Suuruusvertailu kahdelle alkiolle. Paluuarvo true vain, jos ensimmäinen parametri on pienempi kuin toinen. void unaarialiohjelma(alkiotyyppi&) void unaarialiohjelma(const alkiotyyppi&) Tehdään jokin toimenpide parametrina saadulle arvolle. alkiotyyppi unaarikuvaus(const alkiotyyppi&) Kuvataan parametrin arvo joksinkin toiseksi arvoksi. alkiotyyppi binäärikuvaus(const alkiotyyppi 1 &, const alkiotyyppi 2 &) Kuvataan arvot alkiotyyppi 1 ja alkiotyyppi 2 joksinkin kolmanneksi arvoksi. Lähes kaikki STL-algoritmit saavat parametrinaan vähintään kaksi iteraattoria, jotka kertovat mihin osaan säiliön sisältämistä alkioista operaatio kohdistuu. Näitä lähdeiteraattoreita on merkitty iteraattori b ja iteraattori e. STL-algoritmit, jotka tallettavat tuloksia iteraattorin osoittamaan paikkaan, olettavat että joko osoitetussa paikassa on alkioille riittävästi tilaa valmiina tai että käytetään lisäysiteraattoria. Näitä kohdeiteraattoreita on merkitty iteraattori k. void swap(tietoalkio 1, tietoalkio 2 ) Vaihtaa kahden saman tyyppisen tietoalkion arvot keskenään. Alkioiden tulee olla sellaista tyyppiä, että sille toimii sijoitus ja alustus. Jos kyseessä on STL-säiliöt, on tehokkaampaa käyttää säiliön omaa jäsenfunktiota tietoalkio 1.swap(tietoalkio 2 ). int count(iteraattori b, iteraattori e, alkiotyyppi ) int count_if(iteraattori b, iteraattori e, valintafunktio) Laskee niiden välillä [ iteraattori b, iteraattori e )olevien alkioiden lukumäärän, joiden arvo on sama kuin alkiotyyppi, tai jälkimmäisessä tapauksessa, joille valintafunktio palauttaa true. iteraattori find(iteraattori b, iteraattori e, alkiotyyppi ) iteraattori find_if(iteraattori b, iteraattori e, valintafunktio) Etsii väliltä [ iteraattori b, iteraattori e ) ensimmäisen alkion, jonka arvo on alkiotyyppi, tai jälkimmäisessä tapauksessa, jolle valintafunktio palauttaa true. Paluuarvo on iteraattori, joka osoittaa kyseiseen alkioon, tai end( ), jos sopivaa alkiota ei löydy. iteraattori min_element(iteraattori b, iteraattori e ) iteraattori max_element(iteraattori b, iteraattori e ) iteraattori min_element(iteraattori b, iteraattori e, vertailufunktio) iteraattori max_element(iteraattori b, iteraattori e, vertailufunktio) Etsii väliltä [ iteraattori b, iteraattori e ) pienimmän/suurimman alkion ja palauttaa iteraattorin, joka osoittaa kyseiseen alkioon. Kaksi jälkimmäistä versiota muuten samoin, mutta alkioita vertaillaan funktiolla vertailufunktio. bool equal(iteraattori b1, iteraattori e, iteraattori b2 ) bool equal(iteraattori b1, iteraattori e, iteraattori b2, vertailufunktio ) Tutkii sisältääkö väli [ iteraattori b1, iteraattori e ) järjestyksessä samat alkiot kuin iteraattorista iteraattori b2 alkava väli. Jälkimmäinen versio käyttää alkioiden vertailuun funktiota vertailufunkio. iteraattori copy(iteraattori b, iteraattori e, iteraattori k ) Kopioidaan välin [ iteraattori b, iteraattori e ) alkiot iteraattorin iteraattori k osoittamaan paikkaan. Paluuarvo osoittaa kohderakenteeseen kopioitujen alkioiden perässä olevaan alkioon. Kohteen on oltava vector, deque, list tai osoitin (taulukko). void replace(iteraattori b, iteraattori e, alkiotyyppi o, alkiotyyppi n ) void replace_if(iteraattori b, iteraattori e, valintafunktio, alkiotyyppi n ) Korvaa välillä [ iteraattori b, iteraattori e ) kaikki arvot alkiotyyppi o arvolla alkiotyyppi n. Jälkimmäinen versio korvaa arvolla alkiotyyppi n kaikki alkiot, joille valintafunktio palauttaa true. Säiliön on oltava vector, deque, list tai osoitin (taulukko). iteraattori remove(iteraattori b, iteraattori e, alkiotyyppi ) iteraattori remove_if(iteraattori b, iteraattori e, valintafunktio ) Poistaa väliltä [ iteraattori b, iteraattori e ) kaikki alkiot, joiden arvo on sama kuin alkiotyyppi, tai ne alkiot, joille valintafunktio palauttaa true. Paluuarvo on muutetun säiliön uusi looginen end( ). Todellisuudessa alkioita ei poisteta säiliöstä, vaan ne siirretään säiliön loppuun: remove-algoritmit eivät toimi assosiatiivisille säiliöille. Säiliön oma erase-funktio on yleensä käyttökelpoisempi. void reverse(iteraattori b, iteraattori e ) Kääntää välin [ iteraattori b, iteraattori e ) alkioiden järjestyksen takaperin. Käytettävissä vain vector-, dequeja list-iteraattoreilla sekä osoittimilla (taulukoilla). void random_shuffle(iteraattori b, iteraattori e ) Sekoittaa välin [ iteraattori b, iteraattori e ) alkiot satunnaiseen järjestykseen. Käytettävissä vain vector-ja deque-rakenteilla sekä osoittimilla (taulukoilla). void sort(iteraattori b, iteraattori e ) void sort(iteraattori b, iteraattori e, vertailufunktio) Lajitellaan välin [ iteraattori b, iteraattori e ) alkiot. Jälkimmäisessä versiossa alkioiden vertailu suoritetaan funktiolla vertailufunktio. Käytettävissä vain vector- ja deque-iteraattoreilla sekä osoittimilla (taulukoilla). void for_each(iteraattori b, iteraattori e, unaarialiohjelma) Kutsutaan aliohjelmaa unaarialiohjelma järjestyksessä kaikilla välin [ iteraattori b, iteraattori e ) alkioilla. Unaarialiohjelma voi muuttaa alkioiden arvoja. void transform(iteraattori b, iteraattori e, iteraattori k, unaarikuvaus) Kutsutaan funktiota unaarikuvaus järjestyksessä kaikilla välin [ iteraattori b, iteraattori e ) alkioilla. Paluuarvot talletetaan samassa järjestyksessä iteraattorin iteraattori k osoittamaan paikkaan. iteraattori transform(iteraattori b1, iteraattori e, iteraattori b2, iteraattori k, binäärikuvaus) Kutsutaan funktiota binäärikuvaus kaikille välin [ iteraattori b1, iteraattori e ) ja saman mittaisen iteraattorista iteraattori b2 alkavan välin vastinalkioille. Kuvausfunktion paluuarvot talletetaan järjestyksessä iteraattorin iteraattori k osoittamaan paikkaan. Paluuarvo on iteraattori, joka osoittaa kohderakenteessa viimeistä muutettua alkiota seuraavaan alkioon. Muita huomautuksia Tämä dokumentaatio ei yritä olla täydellinen kuvaus edes niistä standardikirjaston osista, jotka on esitelty. Mukaan otettu vain kurssin kannalta mahdollisesti hyödylliset ominaisuudet. Kyseessä ei myöskään ole (itse)opiskelumateriaali, sillä asiaa tuskin voi ymmärtää pelkästään tätä referenssiä tutkiskelemalla. Viimeisin versio löytyy osoitteesta http://www.cs.tut.fi/~aps/doc/cppref.pdf Korjaus- ja muutosehdotukset voi lähettää osoitteeseen aps@cs.tut.fi Tekstissä on oletettu, että kaikissa standardikirjaston palveluita käyttävissä lähdekooditiedostoissa on esiintynyt komento using namespace std; ennen palveluiden käyttöä tai että tarvittavat std-nimiavaruuden nimet on otettu käyttöön yksittäin.