Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
stjepan Gost
|
|
[Vrh] |
|
stjepan Gost
|
|
[Vrh] |
|
Cobs Forumaš(ica)
Pridružen/a: 21. 01. 2008. (13:32:15) Postovi: (206)16
Spol:
Lokacija: Geto
|
Postano: 16:05 ned, 6. 6. 2010 Naslov: |
|
|
[quote="stjepan"]Preciznije, nije mi jasno kako rade funkcije u sljedecem komadu koda:
[code:1] Type &operator*() { return otac->podaci[index]; }
Type *operator->() { return &otac->podaci[index]; }
iterator &operator++() { if (*this!=otac->end()) index++; return *this; }
iterator operator++(int) { iterator temp(*this); if (*this!=otac->end()) index++; return temp; }[/code:1][/quote]
znači po redu:
[code:1]Type &operator*() { return otac->podaci[index]; }[/code:1]
operator *, vraća referencu na podatak tipa Type
pointer otac u strukturi iterator predstavlja listu čiji je iterator.
index predstavlja poziciju na kojoj je trenutno iterator, pa taj operator vraća određeni element iz liste ( tj. polja podaci ). i na taj način možeš mjenjat elemente iz liste.
[code:1]Type *operator->() { return &otac->podaci[index]; }[/code:1]
operator -> vraća pointer na tip Type tj. vraća pointer na element liste, zato vraćaš adresu nekog elementa liste.
[code:1]iterator &operator++() { if (*this!=otac->end()) index++; return *this; }[/code:1]
operator ++ vraća referencu na iterator, prvo provjerava dal si na kraju liste il ne, pa ako nisi vraća referencu na samog sebe s povećanom pozicijom. ( prefix operator )
[code:1]iterator operator++(int) { iterator temp(*this); if (*this!=otac->end()) index++; return temp; }[/code:1]
vraća poziciju iterator na poziciji na kojoj je, ali povećava svoju poziciju ( postfix operator )
stjepan (napisa): | Preciznije, nije mi jasno kako rade funkcije u sljedecem komadu koda:
Kod: | Type &operator*() { return otac->podaci[index]; }
Type *operator->() { return &otac->podaci[index]; }
iterator &operator++() { if (*this!=otac->end()) index++; return *this; }
iterator operator++(int) { iterator temp(*this); if (*this!=otac->end()) index++; return temp; } |
|
znači po redu:
Kod: | Type &operator*() { return otac->podaci[index]; } |
operator *, vraća referencu na podatak tipa Type
pointer otac u strukturi iterator predstavlja listu čiji je iterator.
index predstavlja poziciju na kojoj je trenutno iterator, pa taj operator vraća određeni element iz liste ( tj. polja podaci ). i na taj način možeš mjenjat elemente iz liste.
Kod: | Type *operator->() { return &otac->podaci[index]; } |
operator → vraća pointer na tip Type tj. vraća pointer na element liste, zato vraćaš adresu nekog elementa liste.
Kod: | iterator &operator++() { if (*this!=otac->end()) index++; return *this; } |
operator ++ vraća referencu na iterator, prvo provjerava dal si na kraju liste il ne, pa ako nisi vraća referencu na samog sebe s povećanom pozicijom. ( prefix operator )
Kod: | iterator operator++(int) { iterator temp(*this); if (*this!=otac->end()) index++; return temp; } |
vraća poziciju iterator na poziciji na kojoj je, ali povećava svoju poziciju ( postfix operator )
|
|
[Vrh] |
|
eve Forumaš(ica)
Pridružen/a: 13. 07. 2009. (23:07:06) Postovi: (192)16
Spol:
|
|
[Vrh] |
|
DeNardo Forumaš(ica)
Pridružen/a: 03. 11. 2006. (09:20:30) Postovi: (18)16
Spol:
Lokacija: Zagreb-Ludbreg
|
|
[Vrh] |
|
ante003 Forumaš(ica)
Pridružen/a: 13. 10. 2008. (17:45:10) Postovi: (3C5)16
Spol:
|
|
[Vrh] |
|
AR Forumaš(ica)
Pridružen/a: 14. 03. 2011. (23:25:56) Postovi: (D)16
|
|
[Vrh] |
|
eve Forumaš(ica)
Pridružen/a: 13. 07. 2009. (23:07:06) Postovi: (192)16
Spol:
|
|
[Vrh] |
|
babybodom Forumaš(ica)
Pridružen/a: 29. 06. 2009. (22:03:01) Postovi: (31)16
Lokacija: zagreb
|
|
[Vrh] |
|
Marvin Forumaš(ica)
Pridružen/a: 01. 12. 2006. (15:46:10) Postovi: (56)16
|
|
[Vrh] |
|
babybodom Forumaš(ica)
Pridružen/a: 29. 06. 2009. (22:03:01) Postovi: (31)16
Lokacija: zagreb
|
|
[Vrh] |
|
-georges- Forumaš(ica)
Pridružen/a: 14. 06. 2010. (18:47:06) Postovi: (F)16
Spol:
|
|
[Vrh] |
|
Gost
|
Postano: 17:38 sri, 8. 6. 2011 Naslov: |
|
|
imam jedan banalan problem u ovom dijelu koda:
[code:1]#include <iostream>
#include <string.h> //vidjeti da li se ovo ovako zove
class Sport {
private:
string prviProtivnik, drugiProtivnik;
public:
Sport (string s1, string s2)
{ //konstruktor za Sport
prviProtivnik=s1;
drugiProtivnik=s2;
}
};
class Boks : public Sport {
public:
Boks (string s1, string s2) : Sport (s1, s2)
{ cout << "U boks mecu je pocela prva runda!" << endl; }
};
class Tenis : public Sport {
};[/code:1]
mi javlja grešku: string does not name a type", da li itko zna mozda u cemu je problem?
Hvala!
imam jedan banalan problem u ovom dijelu koda:
Kod: | #include <iostream>
#include <string.h> //vidjeti da li se ovo ovako zove
class Sport {
private:
string prviProtivnik, drugiProtivnik;
public:
Sport (string s1, string s2)
{ //konstruktor za Sport
prviProtivnik=s1;
drugiProtivnik=s2;
}
};
class Boks : public Sport {
public:
Boks (string s1, string s2) : Sport (s1, s2)
{ cout << "U boks mecu je pocela prva runda!" << endl; }
};
class Tenis : public Sport {
}; |
mi javlja grešku: string does not name a type", da li itko zna mozda u cemu je problem?
Hvala!
|
|
[Vrh] |
|
kaj Forumaš(ica)
Pridružen/a: 15. 11. 2009. (21:02:20) Postovi: (B8)16
|
|
[Vrh] |
|
.anchy. Forumaš(ica)
Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
Postano: 15:03 sri, 22. 6. 2011 Naslov: |
|
|
ako imam npr. set stringova, i kada želim pristupiti prvom slovu nekog stringa u setu,kako ću to napraviti? Npr.set s={ABC,DEF,GHI}, i ja trebam znati koje je prvo slovo od ABC,kako to napravim?
Pokušala sam kao set<string>::iterator si=s.begin(); char p=(*s)[0];
ali naravno ne radi..
ako imam npr. set stringova, i kada želim pristupiti prvom slovu nekog stringa u setu,kako ću to napraviti? Npr.set s={ABC,DEF,GHI}, i ja trebam znati koje je prvo slovo od ABC,kako to napravim?
Pokušala sam kao set<string>::iterator si=s.begin(); char p=(*s)[0];
ali naravno ne radi..
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
.anchy. Forumaš(ica)
Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
|
[Vrh] |
|
krki Forumaš(ica)
Pridružen/a: 06. 07. 2011. (20:30:12) Postovi: (2E)16
|
Postano: 15:47 sri, 2. 4. 2014 Naslov: |
|
|
Ima li netko ovdje za malu pomoć? Radi se o sljedećem zadatku s vježbi:
[quote]Napišite generičku implementaciju funkcije sort koja prima 2 parametra. Prvi je pokazivač na proizvoljan tip, a drugi je int. Prvi parametar pokazuje na nulti element polja, a drugi je broj elemenata polja. Funkcija treba sortirati elemente polja. U mainu-u pomoću ove funkcije sortirajte niz int-ova i string-ova.[/quote]
Riješio sam ovako:
zadatak3.h
[code:1]template <class T>
void swap (T a, T b){
T c;
c=a;
a=b;
b=c;
}
template <class T>
void sort (T* p, int a){
for(int i=0; i<a-1; ++i){
for(int j=i+1; j<a; ++j){
if(p[i]>p[j]) swap(p[i], p[j]);
}
}
}
[/code:1]
zadatak3.cpp
[code:1]#include <iostream>
#include <string>
#include "zadatak3.h"
using namespace std;
int main(){
int nizintova[] = {3, 2, 5, 7, 0, 1, 4};
sort(nizintova, 7);
for(int i=0; i<7; ++i)
cout<<nizintova[i]<<" ";
cout<<endl;
string nizstringova[] = {"abc", "aaa", "bac", "bca", "bab"};
sort(nizstringova, 5);
for(int i=0; i<5; ++i)
cout<<nizstringova[i]<<" ";
cout<<endl;
return 0;
}[/code:1]
Dobijem rezultat:
[quote]
3 2 5 7 0 1 4
aaa abc bab bac bca
[/quote]
Dakle, stringove mi sortira, ali intove ne. Nije mi jasno zašto.
Ima li netko ovdje za malu pomoć? Radi se o sljedećem zadatku s vježbi:
Citat: | Napišite generičku implementaciju funkcije sort koja prima 2 parametra. Prvi je pokazivač na proizvoljan tip, a drugi je int. Prvi parametar pokazuje na nulti element polja, a drugi je broj elemenata polja. Funkcija treba sortirati elemente polja. U mainu-u pomoću ove funkcije sortirajte niz int-ova i string-ova. |
Riješio sam ovako:
zadatak3.h
Kod: | template <class T>
void swap (T a, T b){
T c;
c=a;
a=b;
b=c;
}
template <class T>
void sort (T* p, int a){
for(int i=0; i<a-1; ++i){
for(int j=i+1; j<a; ++j){
if(p[i]>p[j]) swap(p[i], p[j]);
}
}
}
|
zadatak3.cpp
Kod: | #include <iostream>
#include <string>
#include "zadatak3.h"
using namespace std;
int main(){
int nizintova[] = {3, 2, 5, 7, 0, 1, 4};
sort(nizintova, 7);
for(int i=0; i<7; ++i)
cout<<nizintova[i]<<" ";
cout<<endl;
string nizstringova[] = {"abc", "aaa", "bac", "bca", "bab"};
sort(nizstringova, 5);
for(int i=0; i<5; ++i)
cout<<nizstringova[i]<<" ";
cout<<endl;
return 0;
} |
Dobijem rezultat:
Citat: |
3 2 5 7 0 1 4
aaa abc bab bac bca
|
Dakle, stringove mi sortira, ali intove ne. Nije mi jasno zašto.
|
|
[Vrh] |
|
Shirohige Forumaš(ica)
Pridružen/a: 16. 11. 2012. (20:19:56) Postovi: (ED)16
Spol:
|
|
[Vrh] |
|
krki Forumaš(ica)
Pridružen/a: 06. 07. 2011. (20:30:12) Postovi: (2E)16
|
|
[Vrh] |
|
|