Suchen in vector<pair<T1,T2>>
-
SideWinder schrieb:
std::vector<int> vec; int to_find = 5; find_if(vec.begin(), vec.end(), [to_find](int x) { return x == to_find; });MfG SideWinder
Braucht das C++0x? Geht das mit VC++2010?
-
volkard schrieb:
in eine map kopieren, suchen, und die map wieder löschen.
Wollte das noch einmal Zitieren. So ist es bei großem Datenumfang schneller! Wie groß ist denn dein vector?
MfG SideWinder
-
hmmmmmmm schrieb:
SideWinder schrieb:
std::vector<int> vec; int to_find = 5; find_if(vec.begin(), vec.end(), [to_find](int x) { return x == to_find; });MfG SideWinder
Braucht das C++0x? Geht das mit VC++2010?
Ja. Ja.
MfG SideWinder
-
Wobei man im Fall mit
int-Elementen auch gleichstd::find_if(vec.begin(), vec.end(), [] (int x) { return x == 5; });oder noch einfacher
std::find(vec.begin(), vec.end(), 5);schreiben könnte

-
bla sah mir nicht nach Compile-Time-Konstante aus :p
MfG SideWinder
-
Noch schöner wäre es natürlich wenn man darüber hinaus C# in C++ eingebaut hätte

int to_find = 5; var result = vec.SingleOrDefault(elem => elem == to_find);Ich will ja nicht spammen, aber ich darf nun wieder in C# programmieren, und die Sprache selbst ist wohl eine der schönsten die ich je gesehen habe

MfG SideWinder
-
Wo ist da der grosse Unterschied zu C++, abgesehen von der Syntax? Statt
varkannst duautoverwenden, und eben einen Lambda-Ausdruck. Mit Boost.Lambda ginge es vielleicht noch ein wenig schöner, aber dafür brauchst du schwarze Magie
Was allerdings wirklich unschön ist, dass man für 70% der STL-Algorithmen immer Argumentpaare
container.begin(), container.end()übergeben muss. Mit Ranges geht das etwas besser, aber die haben sich halt nicht wirklich etabliert...
-
2 Klammern statt 12 bspw?

MfG SideWinder
-
Mit boost.range und boost.lambda/boost.phoenix:
find_if(vec, _1 == to_find);So schön ist C# auch wieder nicht. Gerade bei den Suchmethoden fehlen mir in C# beispielsweise die Iteratoren. Aber eine C++ vs. C# Diskussion hatten wir schonmal.
-
ipsec schrieb:
Mit boost.range und boost.lambda/boost.phoenix:
find_if(vec, _1 == to_find);Genehmigt. So sieht das hübsch aus. Ob man _1 mag oder nicht, aber das ist jedenfalls mal bündig

Edit@ipsec: Hast du den Link dazu?
MfG SideWinder
-
SideWinder schrieb:
Ich will ja nicht spammen, aber ich darf nun wieder in C# programmieren, und die Sprache selbst ist wohl eine der schönsten die ich je gesehen habe

Da muss ich ihm leider zustimmen. Ich find C# auch von Tag zu Tag schöner

-
SideWinder schrieb:
Edit@ipsec: Hast du den Link dazu?
Zu der Diskussion? Das war im "Was würdet ihr an C++ verbessern"-Thread, wenn es auch dort etwas abgewürgt wurde. Hier gehört das auch nicht rein. Wenn du magst, kannst du aber gerne einen neuen C++ vs C#-Thread eröffnen.
-
ipsec schrieb:
SideWinder schrieb:
Edit@ipsec: Hast du den Link dazu?
Zu der Diskussion? Das war im "Was würdet ihr an C++ verbessern"-Thread, wenn es auch dort etwas abgewürgt wurde. Hier gehört das auch nicht rein. Wenn du magst, kannst du aber gerne einen neuen C++ vs C#-Thread eröffnen.
Da habe ich ja sogar rege daran teilgenommen. Danke für den Link.
MfG SideWinder