Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » für vectors vergleich operator überladung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.06.2007, 19:17 Uhr
beterman



hallo
ich habe ein problem...
ich habe ein
class Zahl
{
private:

vector<int> v;

public:
..
..
..

}

also mein class beschaftigt mit vectoren...
in irgendeinem funktion von class Zahl ich will zwischen ein int zahl und irgendein vector vergleichen..also.
int wert;
int index=5;
if(wert<v[index]) {...}
else {...}

wie kann ich "<" operator überladen damit ich einen integer zahl und vector vergleichen kann...
danke schon vielmehr...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.06.2007, 19:51 Uhr
BoBtheREapER
kein job für nen BoB


einen vector kann man nicht mit einem int vergleichen. deshalb gehe ich davon aus dass du den inhalt des vectors vergleichen willst. in wie fern funktioniert das denn nicht?
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.06.2007, 02:07 Uhr
beterman



ja ich meine inhalt des vectors.also int zahl und inhalt eines vectors vergliechen werden sollen.
als ein puclic funktion von class Zahl entwerfe ich so ein funktion...

bool operator < (....)
{
if(zahl<v[i])
return true;
else
return false;
}

hier wird ein int zahl mit einem vector vergliechen.
aber was soll ich hier als parameter schreiben.wenn ich mehr als ein parameter schreibe,dann bekome ich ein fehler fehlermeldung (opertator hat zu viele parameter)....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.06.2007, 11:12 Uhr
KFC Embryo
Ein Huhn


Kannst du dich bitte etwas deutlicher ausdrücken ich versteh nicht so richtig was du meinst.

Was ich mitbekommen habe ist, dass du eine Klasse "Zahl" hast ist, das richtig?
Wäre auch hilfreich wenn du mal den ganzen Quelcode postes, mit Code Tags.

mfg
KFC Embryo
--
An nescis, mi fili, quantilla prudentia mundus regatur?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.06.2007, 11:35 Uhr
Pler
Einer von Vielen
(Operator)


Du brauchst keinen extra überladeten Operator.
Das sind zwei int-Werte, die du direkt mit > bzw. < vergleichen kannst.
fertig.

Genau so wie du das in deinem Letzen post gemacht hast.


Ich gehe mal davon aus, dass du die Aufgabenstellung sebst nicht verstanden hast. Kannst du die mal posten?

Dieser Post wurde am 15.06.2007 um 11:36 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.06.2007, 11:38 Uhr
beterman



class ZahlReihe
{
vector<int> v;
public:
ZahlReihe(int);
~ZahlReihe(void);

void ausgeben();
void setZufallig(int,int);
int gibWertZuIndex(int);
int gibIndexZuWert( int, int , int)

bool operator <(....); //das muß ich schreiben...
};

/////// KONSTRUKTOR /////////////////7

ZahlReihe::ZahlReihe(int ae)
{
v.reserve(ae); //speicher reservierung OPTIONAL

for(int i=0;i<ae;i++)
{
v.push_back(0);
}
}

ZahlReihe::~ZahlReihe(void)
{
}

void ZahlReihe::ausgeben()
{
cout<<setw(6)<<"Index"<<setw(6)<<"Wert"<<endl;
cout<<string(12,'-')<<endl;

for(int i=0;i<v.size();i++)
{
cout<<setw(6)<<i<<setw(6)<<v[i]<<endl;
cout<<endl;
}

}

void ZahlReihe::setZufallig(int min, int max)
{
srand(time(NULL));
for(int i=0;i<v.size();i++)
{
v[i]=rand()%(max-min)+min;
}
}

int ZahlReihe::gibWertZuIndex(int ae)
{
return v.at(ae);
}
bool ZahlReihe::operator <(......)
{

}

int ZahlReihe::gibIndexZuWert( int gWert, int li, int re) const
{
while(li <= re)
{
int mitte = (li + re)/2;
if ( gWert==v[mitte] ) return mitte;
if( gWert<v[mitte]) re = mitte;
else li = mitte + 1;
}
return -1;
}





/* in fuktion gibIndexZuWert ein integer zahl (gWert) ist mit inhalt eines vector(v[mitell]) vergliechen.(gWert<v[mitte])
wie kann ich das realisieren in oben genannte operator fuktion?(bool operator < (.....))
*/

Dieser Post wurde am 15.06.2007 um 11:39 Uhr von beterman editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.06.2007, 12:29 Uhr
Kest
saint


Hi!

Der "<"-Operator kann nur zwei Werte vergleichen. Bei deinem Versuch

C++:
bool operator < (....)
{
if(zahl<v[i])
return true;
else
return false;
}


werden an die Funktion zwei Parameter übergeben (>zahl< und >i<), aber die Klasse selbst gilt auch als Parameter: also insgesamt drei => zu viel.

Aslo musste eine einfache Funktion basteln:

C++:
bool blaBla(const size_t i, const int zahl){
    return (v[i]<zahl);
    }



Sich aber vorher Gedanken darüber machen, ob >i< ein gültiger Index ist.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 15.06.2007 um 12:45 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: