tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
183
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    paul10 paul10 ist offline Mitglied
    Registriert seit
    Apr 2009
    Beiträge
    21
    Hallo,
    also mal zu meiner Frage:

    Ich habe das Buch C++ von A bis Z und lese mich gerade bei Templates und STL ein, da kommt dann bei STL ein Source Code vor, der mir nicht ganz geläufig ist... also seht mal :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    
    // stl1.cpp
    #include<iostream>
    using namespace std;
     
    typedef int* myIterator;
     
    myIterator find( myIterator begin, myIterator end,
                     const int& ival );
    void init( int* Container, int count );
     
    int main() {
       const int cnt = 50;
       int Container[cnt];
       myIterator begin = Container;
       myIterator end = Container + cnt ; // <---- AUF DAS BEZIEHT SICH MEINE FRAGE
       
       init( &Container[0],  cnt );   
     
       int num = -1;
       while( num != 0 ) {
          cout << "Nummer suchen (0=Ende) : ";
          if( !(cin >> num) ) {
             break; // Fehlerhafte Eingabe
          }
          if( num != 0  ) {
             myIterator pos = find( begin, end, num );
             if( pos != end ) {
                cout << num << " an Pos. " 
                     << (pos-begin) << "\n";
             }
             else {
                cout << num << " ist nicht vorhanden!!\n";
             }
          }
       }
       return 0;
    }
     
    myIterator find( myIterator begin, myIterator end,
                                       const int& ival) {
       while(begin != end && *begin != ival) {
          ++begin; // nächste Position
       }
       return begin;
    }
     
    void init( int* Container, int count ) {
       for(int i = 0; i < count; i++) {
          Container[i] = i*i;
       }
    }

    ich würde gerne wissen ob er sich da nicht verdann hat und statt :

    Code :
    1
    
    myIterator end = Container + cnt

    nicht das gehören würde :

    Code :
    1
    
    myIterator end = Container + ( cnt - 1 );

    da der index des array ja mit 0 und nicht mit 1 beginnt...

    Danke im Vorraus
    Gruß
     

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.800
    Blog-Einträge
    5
    Zitat Zitat von paul10 Beitrag anzeigen
    ich würde gerne wissen ob er sich da nicht verdann hat und statt :

    Code :
    1
    
    myIterator end = Container + cnt

    nicht das gehören würde :

    Code :
    1
    
    myIterator end = Container + ( cnt - 1 );

    da der index des array ja mit 0 und nicht mit 1 beginnt...
    Das hat schon seine Richtigkeit so. Der end-Iterator ist bei der STL immer eine Stelle nach dem letzten Element. Würde er auf das letzte Element verweisen, würde die find-Funktion das letzte Element ja nicht mehr betrachten. Außerdem könntest du dann nicht mehr zwischen den Fällen "ich hab mir alle Elemente angeschaut, aber nichts gefunden" und "das letzte Element war ein Treffer" unterscheiden. Alles klar?

    Grüße, Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    paul10 paul10 ist offline Mitglied
    Registriert seit
    Apr 2009
    Beiträge
    21
    aso, ok dann hab ich das mal Grundsätzlich falsch verstanden weil ich dachte , dass es auf das letzte Elment zeigen soll und nicht das Element nach dem letzten wobei aber auch das Kommentar zur Verwirrung beiträgt:

    // Zeiger auf das letzte Element des Containers

    naja, jetzt habs ich verstanden, danke für deine Hilfe

    Gruß
     

Ähnliche Themen

  1. Frage zu array()
    Von xtramen01 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 06.08.10, 20:50
  2. Array Frage
    Von Hallasas im Forum PHP
    Antworten: 5
    Letzter Beitrag: 12.07.07, 15:17
  3. array frage
    Von Peter Klein im Forum PHP
    Antworten: 5
    Letzter Beitrag: 12.03.06, 23:12
  4. array Frage
    Von Methos im Forum PHP
    Antworten: 4
    Letzter Beitrag: 26.11.04, 11:44
  5. Ne frage zu nem array
    Von Nucleus im Forum PHP
    Antworten: 3
    Letzter Beitrag: 29.03.02, 18:00