myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   c++ map (https://mygully.com/showthread.php?t=2177532)

AshPrinter 05.12.10 18:18

c++ map
 
Hallo Leute,

ich weiß zwar was folgender Befehl bewirkt, aber verstehe nicht ganz wie er funktioniert.
Wäre nett, wenn mir Jemand eine kurze Erklärung gibt.
Danke!

Code:

if(MapName.find(Variable)!=MapName.end())

PornoPenner 05.12.10 19:03

Welchen Befehl meinst Du denn?
Was eine if-Anweisung macht, weißt Du oder willst Du eben da wissen?

AshPrinter 05.12.10 19:19

Nein! Natürlich will ich den gesamten Ausdruck erklärt bekommen.

Der Befehl bewirkt ja, dass die Map bis zum ende nach dem Schlüsselwert in der Variablen durchsucht wird und wenn es gefunden wurde wird die if-Anweisung durchgeführt, sonst nicht, aber wieso reicht es != ....end() zu schreiben damit er weiß das er bis zum Ende der Map suchen soll. find() müsste ja dann irgendwann = end() sein?

PornoPenner 05.12.10 19:47

Zitat:

Zitat von AshPrinter (Beitrag 21620242)
Nein! Natürlich will ich den gesamten Ausdruck erklärt bekommen.

Der Befehl bewirkt ja, dass die Map bis zum ende nach dem Schlüsselwert in der Variablen durchsucht wird und wenn es gefunden wurde wird die if-Anweisung durchgeführt, sonst nicht, aber wieso reicht es != ....end() zu schreiben damit er weiß das er bis zum Ende der Map suchen soll. find() müsste ja dann irgendwann = end() sein?

Hmm, Du willst Dich mit einer Programmiersprache beschäftigen, weisst aber nicht was eine if-Anweisung macht?
Ein if-Befehl selbst bewirkt absolut gar nichts, der prüft nur und verzweigt.
Das Internet, google, Wikipedia etc. sollten Dir hoffentlich nicht unbekannt sein (irgendwie hast Du es ja geschafft hier zu posten)... also, schau mal hier:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

In den Klammern steht die Bedingung, und "!=" bedeutet lediglich "ungleich".
Also, prüft die if-Anweisung:
Ist "MapName.find(Variable)" ungleich "MapName.end()" ?

Was MapName.find() und MapName.end() machen kann ich nicht wissen, da Du die Klasse nicht auflistest.
(Da könnte genau so gut "if(HansWurst.krabbelWutz()!=ZappelDings.plupp ())" stehen!)
Da müsste man schon hellsehen können, um zu wissen, ob die Methoden nun Objekte oder primitive Datentypen zurückgeben.

Könntest ja mal mehr Infos beifügen, wenn man Dir schon helfen soll. Raten bringt ja nicht viel!

Was eine Klasse ist wirst Du vermutlich auch nicht wissen:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Xalir 05.12.10 19:51

Mal übersetzt lautet die Zeile:

Suche die Variable in MapName(MapName.Find) solange das Ende von MapName nicht erreicht wurde(!=MapName.end). Gebe Wahr zurück,wenn Suche erfolgreich,ansonsten Falsch.

if wartet auf einen Ausdruck,den es auf wahr oder falsch auswerten kann. MapName.find gibt aber solange nichts zurück, bis es die Variable gefunden hat oder das Ende von MapName erreicht wurde.

PornoPenner 05.12.10 20:00

Zitat:

Zitat von Xalir (Beitrag 21620397)
Suche die Variable in MapName(MapName.Find) solange das Ende von MapName nicht erreicht wurde(!=MapName.end). Gebe Wahr zurück,wenn Suche erfolgreich,ansonsten Falsch.

Wie kommst Du auf "solange suchen bis das Ende nicht erreicht wurde"?

MapName.find() gibt vielleicht ein einfaches Objekt zurück und es wird geprüft, ob dieses Objekt das Endstück ist.

Xalir 05.12.10 20:04

Deswegen:

Zitat:

...Der Befehl bewirkt ja, dass die Map bis zum ende nach dem Schlüsselwert in der Variablen durchsucht wird und wenn es gefunden wurde wird die if-Anweisung durchgeführt, sonst nicht...
Ich gehe davon aus das find eine iterative Funktion ist. Ansonsten könnte es natürlich auch sein das find true zurückgibt, wenn die Variable nicht die Variable ist, die am Ende liegt.

AshPrinter 05.12.10 20:19

@PornoPenner: bevor du Beiträge abgibst solltest du vlt. selber wissen worum es hier geht. Ich weiß nicht nur sehr gut was eine if anweisung macht und was eine klasse ist, nein, ich weiß auch im gegensatzt zu dir was eine map ist.
find() und end() sind vordefinierte funktionen wie zB printf in C.
diese gehören zur eigenschaft von einer map. Ich bin davon ausgegangen, dass jemand der mir antwortet auch weiß was eine Map ist.

@xalir: danke für die antwort, allerdings ist es genau das problem wo ich nicht weiß wie der das weiß dass er am ende angelangt ist wenn er den schlüssel nicht gefunden hat. find() sucht die variable in der map, sobald es gefunden wurde wird es mit end() verglichen. bis dahin ok. aber wieso wird es zu = end() wenn er den schlüssel nicht findet.
naja, so wichtig ist das wahrscheinlich auch nicht, aber das ist auch nur ne interessensfrage gewesen. anwenden tue ich es ja schon im programm.

PornoPenner 05.12.10 21:27

Zitat:

Zitat von Xalir (Beitrag 21620472)
Ich gehe davon aus das find eine iterative Funktion ist. Ansonsten könnte es natürlich auch sein das find true zurückgibt, wenn die Variable nicht die Variable ist, die am Ende liegt.

Was find() macht, können wir ohne Hinweise über die Klasse nicht wissen.

Ob die Methode nun iterativ etwas sucht oder wie auch immer ist vollkommen egal, da das MapName.end() der Methode nicht übergeben wird!

Zitat:

Zitat von AshPrinter (Beitrag 21620551)
@PornoPenner: bevor du Beiträge abgibst solltest du vlt. selber wissen worum es hier geht. Ich weiß nicht nur sehr gut was eine if anweisung macht und was eine klasse ist, nein, ich weiß auch im gegensatzt zu dir was eine map ist.

Also, Du Pappnase!
Da Du Dich wohl auch nicht mit den C++-Konventionen auskennst, wie sollen andere dann richtig erraten was "MapName" sein soll. So sieht es aus als ob MapName eine statische Klasse ist.

Zitat:

Zitat von AshPrinter (Beitrag 21620551)
find() und end() sind vordefinierte funktionen wie zB printf in C.

Sieht aber eher so aus als wären es Funktionen der statischen Klasse MapName.

Zitat:

Zitat von AshPrinter (Beitrag 21620551)
diese gehören zur eigenschaft von einer map. Ich bin davon ausgegangen, dass jemand der mir antwortet auch weiß was eine Map ist.

Die if-Anweisung, die Du postet hat NICHTS mit der Iteration, der Suche etc. zu tun.
Es prüft lediglich, ob das die Methode find() das letzte Element der Map zurückgibt.

So... für kleine vorlaute Scheisser:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] -> "c++ map find"

Erster Treffer:
find():
"Searches the container for an element with x as key and returns an iterator to it if found, otherwise it returns an iterator to map::end (the element past the end of the container)."

Wird das Element mit dem Schlüssel x also nicht gefunden, dann wird der Iterator zu map::end zurückgegeben. Die Bedingung ist dann also wahr!

Scheint ja echt schwierig gewesen zu sein!
Naja, hauptsache n vorlautes Kind!:T

germgerm 05.12.10 21:31

Zitat:

Zitat von AshPrinter (Beitrag 21620551)
aber wieso wird es zu = end() wenn er den schlüssel nicht findet.

Die end-Funktion liefert einen Iterator, der genau Eins hinter das letzte Element zeigt.
Da die find-Methode auch nicht zaubern kann, googelt er halt alle Werte durch, bis der Zeiger am wirklich letzten Element steht, das nicht mehr zur eigentlichen Liste gehört.

Im C würde ein Null-Pointer zurückgegeben werden. Der Iterator hat den Vorteil, dass du mit Iterator-- wieder in der Liste bist.

Edit: Jetzt war ich zu langsam.

AshPrinter 05.12.10 22:14

Hör mal PornoPenner,
ich will mich jetzt garnicht auf dein Niveau begeben und hab auch keine lust alle Aussagen von dir zu kommentieren, wozu ich durchaus in der Lage bin.

1. Nur damit du es weißt, dass hier anscheinend viele Kinder rumtreiben heißt nicht, dass jeder einer von diesen ist.

2. Ich bin ein erwachsener Mann der seine 21 schon längst hinter sich hat.
(Es ist nur eine Vermutung, aber bei dir sieht es nicht so aus).

3. Ich habe keine Ahnung wieso jemand Themen auf diese Weise Antwortet.
Bitte unterlasse es einfach demnächst auf meine Themen zu antworten, deine Antworten mögen zwar letztenendes hilfreich sein, aber sie kosten mich Zeit und Nerven. In dem ganzen Posts die du gemacht hast war nur ein Satz hilfreich. Der rest war nur:
*jammer jammer* ich habs hier nur mit Kindern zu tun *jammer jammer*


Ein Tipp: Nur weil es jeder macht, musst du nicht auch nochmal für google Werbung machen, jeder kennt die Suchmaschiene. Antworte oder lass es sein. ;)

PornoPenner 05.12.10 22:32

Verträgst Du keine Kritik?

1. Du willst, dass man Dir hilft (= ZEIT FÜR DICH INVESTIERT), aber bist nicht in der Lage, Dein Problem ordentlich zu erläutern!

2. Man macht Dich darauf aufmerksam, dass für verständliche Hilfe, genaue Informationen benötigt werden.
Daraufhin, regst Du Dich auf, dass "selbst Du ja weißt was eine Map ist".

3.
Zitat:

Zitat von AshPrinter (Beitrag 21621037)
Ein Tipp: Nur weil es jeder macht, musst du nicht auch nochmal für google Werbung machen, jeder kennt die Suchmaschiene. Antworte oder lass es sein. ;)

Aber anscheinend hast DU es NICHT geschafft google zu benutzen!


Fazit:

Du hast keinen Bock Dich selbst um Dein Problemchen zu kümmern, lässt lieber andere suchen.
Auf eine ordentliche Beschreibung hast Du auch keine Lust, wozu auch mehr als zwei Sätze schreiben... sollen sich doch diejenigen, die Dir helfen, selbst die Mühe machen rauszufinden was Du von ihnen willst!

Nagut... mit dieser Einstellung wünsche ich Dir viel Glück im Leben! Wunder Dich aber nicht, wenn Dich andere asozial anschauen oder Dich, so wie ich, für ein dummes, vorlautes Kind halten.

AshPrinter 05.12.10 22:43

weißt du überhaupt was ein forum ist. du fragst und kriegst antworten.

du kannst jede deiner fragen durch suchen in büchern oder über google beantworten oder du fragst nach.

wie du siehst bin ich neu im forum, und habe gedacht das es professionellere leute gibt die auf einen blick mein problem erkennen.

ich frage immer wenn ich was poste ob ich das auch verstehen würde. und die frage war auch an leute mit ahnung gerichtet und nicht an noobs.

vorlaut und dumm? dass ich nicht lache, erst vorlaut werden und dann dumm rumstehen, das kann wohl nur jemand der sich penner nennt. penn weiter mein freund.

PornoPenner 05.12.10 23:12

Zitat:

Zitat von AshPrinter (Beitrag 21621120)
habe gedacht das es professionellere leute gibt die auf einen blick mein problem erkennen.

Ja, etwa 267 Akademiker hat es benötigt, um Dein äußerst komplexes Problem ohne Erfolg zu analysieren.
Letztendlich konnte nur der erste Treffer bei www,google.de helfen, um diese kryptische Bedingung, die schon auf den ersten Blick, wie eine einfache Ungleichung wirkt, in Wirklichkeit aber die Weltsformel beinhaltet, verständlicher zu machen.

Zitat:

Zitat von AshPrinter (Beitrag 21621120)
habe gedacht das es professionellere leute gibt die auf einen blick mein problem erkennen.

Sorry, die Psychologen und Psychiater sind Sonntags hier nicht anwesend.

AshPrinter 05.12.10 23:18

Zitat:

Zitat von PornoPenner (Beitrag 21621179)


Sorry, die Psychologen und Psychiater sind Sonntags hier nicht anwesend.

ach auch das noch, ich habe mich in eine Heilanstallt verirrt und unterhalte mich mit dem krankesten aller Patienten.

PornoPenner 05.12.10 23:23

Zitat:

Zitat von AshPrinter (Beitrag 21621191)
ach auch das noch, ich habe mich in eine Heilanstallt verirrt und unterhalte mich mit dem krankesten aller Patienten.

Führst auch noch Selbstgespräche :T

Auch hier kann Dir google helfen: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Xalir 05.12.10 23:23

Zitat:

Zitat von AshPrinter (Beitrag 21621120)
vorlaut und dumm? dass ich nicht lache, erst vorlaut werden und dann dumm rumstehen, das kann wohl nur jemand der sich penner nennt. penn weiter mein freund.

Too much sand in the vagina?

Eine Frage in einem Forum stellen: +1 Punkt

Von PornoPenner eines auf den Deckel bekommen: +2 Punkte

Daraufhin einen kleinen Flamewar starten: 10 Punkte aus der Minuskiste

Die Ironie seines Namens nicht erkennen: Unbezahlbar!

AshPrinter 05.12.10 23:48

WTF?:eek:

Ich brauche echt nichts mehr zu sagen, einfach loopback auf eure letzten beiden kommentare:

Code:

for ( AlterVonXalirUndPornoPenner= 16; AlterVonXalirUndPornoPenner>6; AlterVonXalirUndPornoPenner --)
{
  cout << "Letzten beiden Kommentare";
}


PornoPenner 06.12.10 00:01

Zitat:

Zitat von AshPrinter (Beitrag 21621260)
WTF?:eek:

Ich brauche echt nichts mehr zu sagen, einfach loopback auf eure letzten beiden kommentare:

Code:

for ( AlterVonXalirUndPornoPenner= 16; AlterVonXalirUndPornoPenner>6; AlterVonXalirUndPornoPenner --)
{
  cout << "Letzten beiden Kommentare";
}


Die Initialisierung fehlt!
Der dickste Fehler ist ein Syntaxfehler!
Ebenso sind Konventionsverstösse vorhanden!

Du hast es geschafft mehr Fehler als Codezeilen zu fabrizieren.

Xalir 06.12.10 00:02

Hey ich bin stolz drauf, mit 7 Jahren schon programmieren zu können. In diesem Sinne: nänänänä!

PornoPenner 06.12.10 00:07

Zitat:

Zitat von Xalir (Beitrag 21621285)
Hey ich bin stolz drauf, mit 7 Jahren schon programmieren zu können. In diesem Sinne: nänänänä!

Er kann es mit 21 noch nich :)

AshPrinter 06.12.10 00:08

das programm soll euer leben darstellen und nicht eure kenntnisse. ;)

und ihr habt recht :D euer leben ist wirklich voller fehler.

BS_Cerberus 08.12.10 21:31

sehr interessant zu lesen...
xD

germgerm 09.12.10 20:31

Zitat:

Zitat von BS_Cerberus (Beitrag 21630853)
sehr interessant zu lesen...
xD

Meine Erklärung?

^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.