Zum Inhalt springen

vector (datensatz suchen und ändern)


bigpoint

Empfohlene Beiträge

Hallo,

da bist du ja knapp über die 10 Zeichen Mindestanfoderung hinausgekommen. ;)

1. Du musst deinen Vector von vorne bis hinten nach dem entsprechenden Begriff durchsuchen....Stichwort: Schleife und Iterator

Oder, besser, mit find:

http://www.parashift.com/c++-faq-lite/class-libraries.html#faq-37.3

2. Ändern kannst du ganz einfach, sofern der Iterator auf den entsprechenden Vectoreintrag zeigt

Vielleicht hilft dir das im Ansatz weiter:

http://www.cppreference.com/iterators.html

EDIT: Wenn du überwiegend Suchen möchtest, bietet sich evtl. noch ein set an:

http://www.cppreference.com/cppset/

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. Du musste deinen Vector von vorne bis hinten nach dem entsprechenden Begriff durchsuchen....Stichwort: Schleife und Iterator

gibt es keine find Methode wie bei map :(

und so algemein was ist besser für meinen einsatz,

ich habe ja eine struct sagen wir


typedef struct
{
int index;
long fallid;
short iStatus;
} tTest;

[/PHP]

die übergebe ich einem vector

vector<tTest, allocator<tTest> > m_tTest;

dann schreibe ich par Daten rein und jetzt entlich will ich was in dem vector ändern, einfügen usw.

Link zu diesem Kommentar
Auf anderen Seiten teilen

carstenj hat dir doch schon alles gegeben was du brauchst. Schau mal auf den Link den er vorher gepostet hat, da steht alles was du brauchst:


[...]

std::vector<int> bigvector;

// Some code filling bigvector with lots of stuff:

std::vector<int>::iterator five = std::find(bigvector.begin(), bigvector.end(), 5);

// Five will be bigvector.end() if there is no element 5 found,

// otherwise it will point to the first 5 in the vector.

[...]

(aus http://gpwiki.org/index.php/Standard_Template_Library )

wo liegt das problem? :)

greetz

(der etwas ratlose) mep...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

zu 1.) Ich denke das du für std::find den "operator==()" in deinem struct implementieren musst um entsprechend danach zu suchen (naheliegende Vermutung - werde ich aber gleich mal testen).

zu 2.) Hast du die Includedatei <algorithm> eingebunden? (Wenn ich die rausgenommen hab in meinem Testprogramm, bekam ich auch diesen Fehler)

Gruß

mep

Link zu diesem Kommentar
Auf anderen Seiten teilen

Man kann auch find_if benutzen, da kann man ein Vergleichsfunktionsobjekt angeben.

Stimmt, das geht auch :) Wäre meine zweite Option gewesen. Das ist, denke ich , auch sauberer als in einem struct Operatoren zu überladen. Nichtsdestotrotz hab ich das gerade erfolgreich mal getestet um das von oben zu ergänzen ;)

greetz

mep

Link zu diesem Kommentar
Auf anderen Seiten teilen

kannst Du einen Beispiel zeigen

#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

struct Daten
{
int wichtig;
int egal;
};

struct FindeWichtig
{
bool operator()(const Daten& daten)
{
return daten.wichtig == w_;
}

int w_;
};

int main()
{
vector<Daten> v;
Daten d1 = { 1, 2 };
Daten d2 = { 3, 6 };
Daten d3 = { 8, 42 };

v.push_back(d1);
v.push_back(d2);
v.push_back(d3);

FindeWichtig fw;
fw.w_ = 3;

vector<Daten>::iterator i = find_if(v.begin(), v.end(), fw);
if(i != v.end())
{
cout << "Gefunden (egal=" << i->egal << ")\n";
}
}[/code]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Noch was jetzt will ich den vector in eine andere Klasse aufrufen.

Muss ich in der Klass wieder die structur definieren oder wie kann man es am einfachstem lösen ?

das könt ihr vergessen :eek

ist aber der einsatz mit einem vector im meinem Fall ok, oder lieber list map usw benutzen ??

Link zu diesem Kommentar
Auf anderen Seiten teilen

ist aber der einsatz mit einem vector im meinem Fall ok, oder lieber list map usw benutzen ??
Das lässt sich mit den Informationen, die du bisher geliefert hast, nicht sagen.

Wie sehen die Anwendungsfälle aus?

Viele Einfüge-/Löschvorgänge? Falls ja, vorne oder hinten oder mittendrin? Oder statische Daten?

Viele Suchvorgänge oder Zugriffe über Index?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das lässt sich mit den Informationen, die du bisher geliefert hast, nicht sagen.

Wie sehen die Anwendungsfälle aus?

Viele Einfüge-/Löschvorgänge? Falls ja, vorne oder hinten oder mittendrin? Oder statische Daten?

Viele Suchvorgänge oder Zugriffe über Index?

Also in dem vector können maximal 5 Einträge sein

Einfügen immer hinten, ändern beliebig aber auch nicht oft und dem entsprechend nicht viele Zugriefen über Index.

Ich Speiche/Bearbeite die Daten im vector damit ich sie später in andere Klasse ausgeben kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...