Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » vector/container

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
20.01.2008, 19:09 Uhr
wolf360



Okey ich wollt mal fragen wie es etz genau mit Vectoren/Container asschaut?

Ist so ein Cotainer auch ein Array oder was ist es ?

Beispiel:


C++:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void){
    const int  cnt = 50;
     vector<int> Container(cnt);
      for(int i = 0; i < cnt; i++){
              Container[i] = i*i;
              }
     int num = -1;
     while(num != 0){
               cout << "Nummer suchen (0=Ende); ";
               if(!(cin >> num)){
                        cout << "Fehler bei der Eingabe";
                        }
              
     if (num!= 0){
               vector<int>::iterator pos=find(Container.begin(),Container.end(), num);
               if(pos != Container.end()){
                      cout << num <<" an Pos. " << (pos-Container.begin())<< "\n";
                      }
               else { cout << num << "ist nicht vorhanden !!\n";
               }
     }
}
getchar();
    }



Mit diesem Beispiel Zeigt er die Position der eingegeben Zahl im Array an.... blos was ich nicht ganz verstehe ist, wie mach ich etz das ganze mit Strings?

Mit Einzelen Buchstaben schaff ich es noch aber mit Zeichenketten nicht...?! z.B. Es soll erst ein Text eingegeben und danach soll man die Position der Buchstaben abfragen können.

gruß wolf360

Dieser Post wurde am 20.01.2008 um 19:12 Uhr von wolf360 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.01.2008, 19:27 Uhr
Kest
saint


Hi!

>string< ist ein Container wie >vector< auch (ausgenommen vielerlei Hilfsfunktionen wie z.B. >find<). Also lässt sich z.B. >std::find< genauso auf >string< anwenden.

C++:
std::string str("....asdjlahsd");

std::string::const_iterator CI = std::find(str.begin(), str.end(), 's');
if(CI != str.end())
       std::cout << *CI << std::endl;

std::string::size_type pos = str.find('o');
   if(pos != std::string::npos)
        std::cout << str[pos];

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 20.01.2008 um 19:29 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.01.2008, 19:30 Uhr
wolf360



lol und was genau bringt dann ein vector xD ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.01.2008, 19:33 Uhr
Kest
saint


Wie jetzt?
Was die Vorteile und die Nachteile der jeweiligen Container sind?
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.01.2008, 19:37 Uhr
0xdeadbeef
Gott
(Operator)


Zur Auswahl eines Containers:


Ein std::vector modelliert die Standardkonzepte "Random Access Container" und "Back Insertion Sequence." Die Details dazu kannst du zum Beispiel auf www.sgi.com/tech/stl nachschlagen; in einfachen Worten modelliert ein Random Access Container zusätzlich zum unterliegenden Container-Interface (Reversible Container) ein Interface ähnlich dem eines Arrays.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 20.01.2008 um 19:45 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.01.2008, 19:42 Uhr
xXx
Devil


Also, bsw. ein std::vector ist nicht viel anderes als ein dynamischer Array(d.h. einer der aufm Heap per new[]/delete[] erzeugt wird), wobei noch ein paar Optimierungen vorgenommen wurden.

Schreib dir doch einfach mal eine Funktion, um einen Speicher von beliebiger Größe anzulegen, dann eine um diesen zu vergrößern und dann noch eine um das wieder frei zu geben. Dann noch eine zum Kopieren der Speicherbereiche (und vllt. dabei auch Copy-Konstruktoren usw. der einzelnen Elemente beachten). Dann wirst du schnell sehen, dass das ganze nicht so sehr leicht ist. Man braucht es aber immer wieder, wenn man seine Anwendung dynamisch halten will oder bsw. Messwerte einlesen will usw..

Nun bezeichnet man aber als Standardcontainer nicht nur std::vector. Auch std::list, std::deque und sogar std::string(dynamischer Array von char) sind Container. std::list läst sich am besten nutzen, wenn oft Daten gelöscht/eingefügt werden und zwar nicht am Ende oder Anfang. So hat jeder Typ seine Geschwindigkeitsvorteile usw. die sich bei großen Datenmengen auszeichnen.

Naja aber kannst dich dazu ja vllt einfach mal informieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.01.2008, 13:54 Uhr
wolf360



oha..." ^^


danke für die Erklärung!!

gruß wolf360
 
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: