lsearchE Grade %%D7%A4%D7%A1%22%D7%93+%D7%9C%D7%A7%D7%A1%D7%9E%D7%9F8 Themathlearn Asearch%search0 Themathlearn B Curl %search1
search Themathlearn easearchnnsearch First Gsearcha
e Themathlearn 8searchTh Curl m Maths th Themathlearn e Themathlearn rsearch search M Math tsearchs searchE% First 8searchA3brug%20af%20gradueret%20nd%20filterE
%%E0%B9%82%E0%B8%AB%E0%B8%A5%E0%B8%94%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%81%E0%B8%81%E0%B8%A3%E0%B8%A1mathematics+worksheet+factory+deluxe8 Maths 96 Themathlearn E Themathlearn % Curl 8
A First % First 0searchB8searchBmancala+vende+dobavel+com+pedras+azuis% Maths 0% First 8search9 Math %E First %search8 First 9 Maths % Curl 0% Grade 8 Maths B Curl %E0searchBsearch%8search%search0%B8search84%search0searchB8% Themathlearn 3searchE Learning % First 8
B Curl %E Grade %MAXIME+VAN+MOERKERCKE8search95 Curl E Grade % Themathlearn 8
A First %Esearch% Math 8 Learning B2%search0%Bsearch%Asearch%E Maths %B Maths %search5%E0%B9%82%E0%B8%AB%E0%B8%A5%E0%B8%94%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%81%E0%B8%81%E0%B8%A3%E0%B8%A1mathematics+worksheet+factory+deluxeE First %B Curl %Amancala+vende+dobavel+com+pedras+azuis%search0 Learning Bsearch% First CäsearchnsearchC Learning +searchssearcha Learning d Themathlearn r Curl isearchs Math [3], joka valmistui vuonna 1998.
Kirjasto sisältää huomattavan määrän erilaisia funktioita ja luokkia helpottamaan ohjelmoija työtä. Koska C++ perustuu monilta osin C-kieleen eivät kaikki standardikirjaston tarjoamat komponentit ole luokkia. Mukana on myös tavallisia aliohjelmia (kuten printf()) jotka periytyvät C kielen standardikirjastoon.
Parhaimman kuvan merkkijonokirjastojen samankaltaisuudesta saa esimerkkien avulla. Ensimmäisessä esimerkissä esitellään merkkjonojen peruskäyttöä. Luodaan 2 merkkijonoa, liitetään ne yhteen uudeksi merkkijonoksi ja verrataan syntynyttä merkkjonoa neljänteen merkkijonoon. Huomioitavaa on, että merkkijonojen vertailu on ohjelmointikielissä erilaista. C++:ssa vertailuoperaattori == vertaa merkkijonojen sisällön samankaltaisuutta. Javassa vastaava operaattori vertaa viittaavatko kaksi eri olioviitettä samaan olioon ja varsinainen merkkijonojen sisällön vertailu tulee tehdä käyttäen equals() -metodia.
//C++
#include<string>
string first = "ABC";
string second = "abc";
string third = first + second;
bool same = ("ABCabc" == third);
//Java
String first = "ABC";
String second = "abc";
String third = first + second;
boolean same = "ABCabc".equals(third);
Jotta C++:n string-luokan saa käyttöönsä tulee se sisällyttää ohjelmaan käyttäen lausetta #include <string>. Javan String-luokka on esiteltynä paketissa java.lang jota ei tarvitse erikseen sisällyttää (import).
Javasta löytyy String-luokan lisäksi StringBuffer luokka jota kannattaa käyttää kun merkkijonoon aiotaan luomisen jälkeen lisätä merkkejä. String luokan merkkijonoa ei nimittäin voi muuttaa ja normaali muutosoperaatio itse asiassa luo aina uuden merkkijonon:
String a = "ABC";
a = a + "abc"; //Vastaa sisäisesti a = new String("ABCabc");
Kun taas StringBuffer muuttaa aidosti merkkijonoa:
StringBuffer a = "ABC";
a = a + "abc"; //Vastaa sisäisesti a.append("abc");
Näinollen StringBuffer on nopeampi käyttää kun merkkijonoon lisätään perään merkkejä. StringBufferia kannattaa siis käyttää tilanteissa joissa luetaan esimerkiksi tietoa useista lähteistä ja näistä halutaan koota yksi merkkijono.
C++:n otsikkotiedosto (header) <cmath> esittelee yleisimmät matemaattiset funktiot. Javan matemaattiset funktiot löytyvät staattisesta luokasta Math joka löytyy paketista java.lang. Lisäksi Javan paketista java.math löytyvät luokat BigInteger ja BigDecimal.
Kummankin kielen kirjastoista löytyvät trigonometriset funktiot, lukujen pyöristämiseen tarkoitetut funktiot, logaritmiset funktiot, neliöjuuri sekä joitakin muita funktioita. C++ tarjoaa hieman suuremman valikoiman matemaattisia funktioita. Se sisältää mm. hyperboliset sinin, kosinin ja tangentin ja 10-kantaisen logaritmin joita Javassa ei ole.
//C++ #include <cmath> ... double sin = sin(1); double cos = cos(0); double tan = tan(1); double log = log(1); // e-kantainen logaritmi double log10 = log10(100); //10-kantainen logaritmi
Samankaltaisuuksien lisäksi C++:n ja Javan matemaattisissa kirjastoissa on myös eroja. Ohjelmoijan kannalta selkein ero on virheenkäsittelyssä. C++:n matemaatiset kirjastot periytyvät C-kielestä ja tästä johtuen virheenkäsittely hoidetaan käyttämällä errno -kirjastoa:
//C++
#include <cmath>
#include <cerrno>
...
errno = 0; // asetetaan virhenumero virheettömään tilaan
// yritetään laskea nelijuurta negatiiviselle luvulle
double sqrtResult = sqrt(-1);
if( errno == EDOM ) {}
Javassa virheiden käsittelyyn käytetään poikkeuksia:
//Java
try {}
catch (ArithmeticException ex) {}
C++:n erikoisuutena ovat kompleksilukujen laskemiseen tarkoitetut luokat joiden ansiosta kompleksiluvut näyttävät ohjelmoijalle pitkälti tavallisilta reaaliluvuilta sekä matriisien laskemisen hoitava luokka.
Vaikka kummankin kielen matemaattisilla kirjastoilla voidaan toteuttaa yleisimmät matemaattiset operaatiot ne eivät välttämättä ole paras valinta varsinaisten matemaattisten ohjelmistojen toteuttamiseen. Tähän tarkoitukseen kannattaa valita esimerkiksi Fortran ohjelmointikieli mm. sen laajojen matemaattisten kirjastojen ansiosta. Javan etuna voidaan pitää BigInteger ja BigDecimal luokkien olemassaoloa. Koska desimaaliluvuilla laskeminen tarkasti ei ole tietokoneilla mahdollista6 joudutaan usein ongelmiin mm. lukujen pyöristysten kanssa. Tähän ongelmaan Javan BigDecimal antaa kohtuullisen ratkaisun. Desimaalilukujen laskennan epätarkkuus on niin yleinen ja hyvin tunnettu ongelma, että on oikeastaan aika erikoista, että C++:ssa ei kyseiseen ongelmaan ole standardissa mitään ratkaisua.