mikrocontroller.net

Forum: PC-Programmierung Vector list usw


Autor: Laka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt es ne auflistung

welche metdoten die einzelnen container können

Autor: Rene H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Laka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wollte gerade für vector push_front
nehmen geht aber net laut liste und programm

wieso knaln die des net rein

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wollte gerade für vector push_front nehmen

Weil ein Vector dafür ungünstig ist, er muss beim löschen eines 
elementes komplett neu augebaut werden (ausser beim letzen).

Warum willst du denn ein Vector verwenden?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laka schrieb:
> wollte gerade für vector push_front
> nehmen geht aber net laut liste und programm
>
> wieso knaln die des net rein

Weil die geforderte Komplexität von O(1) damit nicht erreichbar ist. 
Aber es hindert dich keiner, das Ganze mit insert abzuhandeln.

Wenn du das brauchst kannst du auch ein std::list nehmen. Das ist oft 
sowieso die bessere Wahl.

Autor: Laka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lerne gerade für die Prüfung ziehl war es gerade doppelte einträge in 
list
zu vermeiden hab das ganze mit dem bool hans gelöst gibts da was 
besseres



außer bool oder Flags

#include <iostream>
#include <list>
#include <string>
using namespace std;

class Verwaltung
{
  public:

       void bekommedaten ()
        {
        for( it = verw.begin() ; it != verw.end() ; it++)
            {
              cout << **it;
              }
        }

     bool empty()
      {
         return( this->verw.empty() );
      }

     string* setfront_undget(string* &a)
      {bool hans = false;

        for( it = verw.begin() ; it != verw.end() ; it++)
            {



              if ((**it) == *a) hans = true;
              }

           if (hans == false)
       {
      verw.push_front(a);
       }

    return (*( this->verw.begin()));
    }

    void setback(string* &a){verw.push_back(a);}


       /*string* front() //bekomme front Daten
      {
        return( *( this->verw.begin() ) );
      }*/



    private:


   list<string*>  verw;
  list<string*>::iterator it;

};
int main()
{
string* choice1 = new string ("Hans1");
string* choice2 = new string ("Hans2");
string* choice3 = new string ("Hans4");
string* choice4 = new string ("Hans4"); //soll nicht meht eigetragen 
werden
string* choice5 = new string ("Hans5");
  Verwaltung ver;
(ver.setfront_undget(choice1));
(ver.setfront_undget(choice2));
(ver.setfront_undget(choice3));
(ver.setfront_undget(choice4));
(ver.setfront_undget(choice5));
ver.bekommedaten();
 // cout << *(ver.front());




;}

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Satzzeichen
2. Syntaxhervorhebung oder Anhang
3. Copy & Paste

Was soll eigentlich das werden:
if ((**it) == *a) hans = true;
?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lerne gerade für die Prüfung ziehl war es gerade doppelte einträge in
list zu vermeiden

Dann nimm eine map

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bzw. eine std::set

Autor: Laka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if ((**it) == *a) hans = true;

hier werden einfach die Adressen verglichen

wir haben zb übungen gemacht wo wir die Funktionen abwechselnd mit 
zeigern
oder referenzen gefüllt haben das ist in der realität misst aber zum 
üben ok

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laka schrieb:
> if ((**it) == *a) hans = true;
>
> hier werden einfach die Adressen verglichen
Das glaub ich eben kaum...

Autor: Laka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
äh inhalt meinte ich

Autor: Laka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bin schon verwirrt sorry

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schon jemand erwähnt hat, wäre, sofern die Reihenfolge der Einträge 
nicht wichtig ist, std::set die einfachste Alternative. Das kümmert sich 
automatisch darum, daß keine Duplikate enthalten sind.

Übrigens: Warum legst du die Strings alle dynamisch mit new an und wo 
gibst du sie wieder frei? Daß du Pointer im Container speicherst, sorgt 
auch dafür, daß du nach dem Eintrag mit deiner for-Schleife suchen mußt, 
statt std::find nehmen zu können. So wird dann auch std::set nicht 
funktionieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.