Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

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/

  • Autor

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.

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...

  • Autor

wo liegt das problem? :)

soger zwei probleme :confused:

da ich in dem vector nicht nur ein einziegen Wert vector<int> habe sondern eine struct

und zweites prob.

error C2039: 'find' : Ist kein Element von 'std'

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

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

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]

  • Autor

Danke Klotzkopp, habe ich verstanden ;)

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 ?

  • Autor

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 ??

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?

  • Autor
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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.