Standardikirjastoa. Sisältää mm. string, vector, list... luokat.
0Äänestä
Johnnie83
Ensiksi, mulle on noiden nimiavaruuksien hyöty jäänyt vähän hämäräksi, eli tiedän miten niitä käytetään mutta en näe mitään syytä miksi niitä käytettäisiin, voisiko joku valaista asiaa?
Toiseksi, onko muita valmiiksi määriteltyjä nimiavaruuksia kuin std?
Ja viimeksi, miten te käytätte nimiavaruuksia(vaikka std:tä)? Eli kirjoitatteko: a) 'using namespace std', jolloin nimiavaruutta ei periaatteessa käytetä b) '#include using std::vector;', jolloin syntyy lista siitä mitä luokkia käyttää c) suoraan koodiin std::cout
0Äänestä
namespace
Nimiavaruuksia käytetään estämään ns. globaalin nimiavaruuden "saastumista", esim. nimikonflikteja laajoissa ohjelmissa, esim. kun käytetään monia kirjastoja joissa saattaa olla samannimisiä määrittelyjä. Nimiavaruuden avulla voidaan käyttää tarkasti haluttua kirjastoa.
Tuo std on standardi C -kieleen kuuluva kirjasto. Jos haet muita (ei kamalan vanhoja) C -kirjastoja, niin nekin on tyypillisesti määritelty omaan nimiavaruuteensa.
Käyttö riippuu käyttötilanteesta ja jossain määrin makuasioista. Jos vaikkapa jostain syystä pitääkin vaihtaa namespacen toteutusta, niin silloin pitääkin tarkasti suunnitella miten namepaceja käyttää, erityisesti laajoissa ohjelmissa. Esim. headereihin ei kannata pistää "globaalimäärittelyä" 'using namespace jotain;'.
Kyllä a-tapauksessakin ihan *periaatteessa* käytetään nimiavaruutta. Sen 'using namespade std':n voi kirjoittaa tiedoston alkuun, jolloin se koskee koko tiedostoa (ja sen jälkeen includetettuja headereita). Tai sitten sen voi kirjoittaa vaikka funktion sisään, jolloin sen vaikuttaa vain ko. funktiossa.
0Äänestä
avaruudet
Jos katsot c .NET:llä tehtyä koodia, huomaat että siinä on nimiavaruuksista tehty oikea viidakko.
Sitä en lähde kommentoimaan onko se hyvä asia vai ei.
Vastaukset 4
Vanhimmat
Standardikirjastoa. Sisältää mm. string, vector, list... luokat.
Ensiksi, mulle on noiden nimiavaruuksien hyöty jäänyt vähän hämäräksi, eli tiedän miten niitä käytetään mutta en näe mitään syytä miksi niitä käytettäisiin, voisiko joku valaista asiaa?
Toiseksi, onko muita valmiiksi määriteltyjä nimiavaruuksia kuin std?
Ja viimeksi, miten te käytätte nimiavaruuksia(vaikka std:tä)? Eli kirjoitatteko:
a) 'using namespace std', jolloin nimiavaruutta ei periaatteessa käytetä
b) '#include using std::vector;', jolloin syntyy lista siitä mitä luokkia käyttää
c) suoraan koodiin std::cout
Nimiavaruuksia käytetään estämään ns. globaalin nimiavaruuden "saastumista", esim. nimikonflikteja laajoissa ohjelmissa, esim. kun käytetään monia kirjastoja joissa saattaa olla samannimisiä määrittelyjä. Nimiavaruuden avulla voidaan käyttää tarkasti haluttua kirjastoa.
Tuo std on standardi C -kieleen kuuluva kirjasto. Jos haet muita (ei kamalan vanhoja) C -kirjastoja, niin nekin on tyypillisesti määritelty omaan nimiavaruuteensa.
Käyttö riippuu käyttötilanteesta ja jossain määrin makuasioista. Jos vaikkapa jostain syystä pitääkin vaihtaa namespacen toteutusta, niin silloin pitääkin tarkasti suunnitella miten namepaceja käyttää, erityisesti laajoissa ohjelmissa. Esim. headereihin ei kannata pistää "globaalimäärittelyä" 'using namespace jotain;'.
Kyllä a-tapauksessakin ihan *periaatteessa* käytetään nimiavaruutta. Sen 'using namespade std':n voi kirjoittaa tiedoston alkuun, jolloin se koskee koko tiedostoa (ja sen jälkeen includetettuja headereita). Tai sitten sen voi kirjoittaa vaikka funktion sisään, jolloin sen vaikuttaa vain ko. funktiossa.
Jos katsot c .NET:llä tehtyä koodia, huomaat että siinä on nimiavaruuksista tehty oikea viidakko.
Sitä en lähde kommentoimaan onko se hyvä asia vai ei.