[ Nibble @ 26.11.2005. 15:13 ] @
1.Pitanje:
Zasta služi komanda
Code:
using namespace std;
.Kucam je svaki put kada pisem neke programcice a ne znam zasta služi.

2.Pitanje:
Moze li mi ko objasniti vektore.Koliko sam ja shvatio oni se mogu definisati kao string,int,float i td a ustvari oni su nizovi?
[ Dragi Tata @ 26.11.2005. 15:32 ] @
Citat:
Nibble: 2.Pitanje:
Moze li mi ko objasniti vektore.Koliko sam ja shvatio oni se mogu definisati kao string,int,float i td a ustvari oni su nizovi?


http://www.novetehnologije.com/Default.aspx?tabid=65
[ #Ninja# @ 26.11.2005. 21:23 ] @
Citat:
Nibble: 1.Pitanje:
Zasta služi komanda
Code:
using namespace std;
.Kucam je svaki put kada pisem neke programcice a ne znam zasta služi.

To se kuca samo u Microsoftovim kompajlerima (Visual Studio i Visual C++). Označava da ćeš koristiti standardni namespace (tj. ključne riječi i ostale džidže).
[ SiN_MaFiJe @ 26.11.2005. 21:28 ] @
Citat:
Nibble: 1.Pitanje:
Zasta služi komanda
Code:
using namespace std;
.Kucam je svaki put kada pisem neke programcice a ne znam zasta služi.

jednostavnije
std sluzi da nemoras da pises std::cout ili std::cin......
[ NrmMyth @ 26.11.2005. 22:23 ] @
Citat:
#Ninja#: To se kuca samo u Microsoftovim kompajlerima (Visual Studio i Visual C++). Označava da ćeš koristiti standardni namespace (tj. ključne riječi i ostale džidže).

Zasto se to samo pise kod MS kompajlera?
[ skundra @ 26.11.2005. 22:40 ] @
using namespace std; je direktiva koja se koristi da kompajleru ukazes na to da ces sve definisane klase,funkcije,promenljive koristiti u standardnom imenskom prostoru std.Npr. mozes da kucas using namespace "ime nekog drugog imenskog prostora", i prilikom toga sve promenljive ce vaziti samo unutar tog prostora, odnosno u vise kosiscenih imenskih prostora mozes da koristis ista imena za funkcije,promenljive itd...
primer
namespace prostor1;
{int i=1; int j=50;}
namespace prostor2;
{int i=0; j=40;}

onda kucas za odredjenu promenljivu koju zelis da koristis

prostor1::i=5; // prvo i je promenilo vrednost
prosto2::j=0 // drugo j je promenilo vrednost

A ako zelis da uvezes sve promenljive iz odredjenog imensog prostora kucas
using namespace prostor1;
using namespace prostor2;
Tu treba voditi racuna da ne dodje do preplitanja naziva promenljivih ako uvozis promenljive istog naziva iz vise imenskih prostora.

Imenski prostor nije stvar Microsoft-ovog ili bilo kog drugog kompajlera vec je stvar stanarda C++.



[Ovu poruku je menjao skundra dana 26.11.2005. u 23:45 GMT+1]
[ #Ninja# @ 28.11.2005. 01:13 ] @
Ali se ne kuca u Borland C++ Builderu.
[ NastyBoy @ 28.11.2005. 01:38 ] @
Nego shta se "kuca"?
[ Buffy @ 28.11.2005. 12:28 ] @
Normalno da se kuca, u svakom normalnom kompajleru.
Da se ne kuca, namespaceovi ne bi koristili nicemu.
[ #Ninja# @ 28.11.2005. 18:40 ] @
U C++ Builderu se kuca
Code:
#include <iosream.h>

umjesto
Code:
#include <iosream>
using namespace std;
[ std::geek @ 28.11.2005. 19:18 ] @
Moradoh da se javim - zbog nick-a

Citat:
#Ninja#: U C++ Builderu se kuca
Code:
#include <iosream.h>

umjesto
Code:
#include <iosream>
using namespace std;


Pa stvarno nemam Borland Builder (nisam mazohista) pa ne mogu da kazem, ali mi je tesko da poverujem u to. U stvari moguce je da imas neku veoma matoru verziju Buildera. U suprotnom, ako se fajl zaista zove <iostream.h> to bi znacilo da se uvazena Borland kompanija ne pridrzava Ansi-ISO standarda za CPP koji propisuje da se header fajlovi standardne C++ biblioteke ne zavrsavaju sa .h, u sta mi je stvarno tesko da poverujem. Inace using namespace je CPP standard. To nikako nije rezervisana rec specificno vezana za bilo koji brend kompajlera ili radnog okruzenja.

Na kraju, ako ne zelis, i ne moras da kucas using namespace std, ali onda moras da kucas std:: ispred svake klase ili funkcije iz standardne biblioteke. To vazi i za MSVC i za GCC i za Watcom i za ... (dodaj brend po zelji). Primer za to je moj nick. Da sam pre nego sto sam ga registrovao napisao using namespace std moj nick bi bio kraci, tj. samo geek.

Druga, i jos cistija alternativa za using namespace std je da "oznacis" samo one klase koje ces koristiti u fajlu, pa ako su to samo vector i string mozes pisati npr:

Code:

#include <vector>
#include <string>

using std::vector;
using std::string;

vector<string> myVectorOfStrings;







[Ovu poruku je menjao std::geek dana 28.11.2005. u 20:36 GMT+1]
[ Nibble @ 03.12.2005. 11:39 ] @
Hvala vam ljudi sve mi je jasnije.Imam jos jedno pitanje :)

Code:
//printBinary.h
// Display a byte in binary
void printBinary(const unsigned char val);
///

//printBinary.cpp {O}
#include <iostream>
void printBinary(const unsigned char val) {
for(int i = 7; i >= 0; i--)
if(val & (1 << i)) //Moze li mi ko obasniti ovaj dio.Nerazumijem operator "<<" .Sta on radi?
std::cout << "1";
else
std::cout << "0";


[ #Ninja# @ 03.12.2005. 13:42 ] @
To ti je lijevi SHIFT operator (postoji i desni, >>). Oba argumenta moraju biti int. Shift operator (ovaj lijevi konkretno) pomijera bitove broja na lijevoj strani za onoliko mjesta ulijevo kolika je vrijednost broja na desnoj strani. Prazna mjesta se ispunjavaju nulama (binarnim, naravno).

Decimalo opisano, a << b je isto što i a*2b (a >> b je isto što i a/2b).

EDIT - da pojasnim ovo binarno

222 << 2

Ovo bismo decimalno izračunali kao 222*22 = 888. Binarno bi to izgledalo ovako:

(222)10 = (11011110)2

Broj 11011110 bismo pomjerili 2 mjesta ulijevo i na dva prazna mjesta s desne strane stavili dvije nule. Dobili bismo broj 1101111000.

(1101111000)2 = (888)10









[Ovu poruku je menjao #Ninja# dana 03.12.2005. u 14:59 GMT+1]