2010-11-22 6 views
5

Ich brauche die Vorteile von delphi-Sets zu verwenden, wie „in“ in C++, aber ich weiß nicht, ob es eine Datenstruktur, wie Sätze in C++Was ist die Menge artige Datenstruktur in C++

I weiß, dass ich stattdessen ein Array verwenden kann, aber wie gesagt, möchte ich Sätze wie "in" verwenden, also gibt es irgendwelche eingebauten Datenstrukturen wie in C++?

Wenn ja, bitte erklären, wie es zu benutzen, bin ich immer noch ein Starter in C++

Wenn nein, gibt es eine Möglichkeit, es (außer Array, da ich es weiß) zu vertreten.

Dank im Voraus :)

+4

['std :: set'] (http://www.sgi.com/tech/stl/set.html) ist ein Satz. Sie können '#include ' um es zu bekommen. – birryree

+1

"set of" und seine nativen Operatoren (in, +, -, *) sind Pascal (und Delphi) eigen. C++ implementiert etwas Ähnliches unter Verwendung von Vorlagen, aber ihnen fehlt die Eleganz der Pascal-Implementierung (obwohl Pascal-Sätze zur Zeit auf 255 Elemente beschränkt sind) –

+2

@ldsandon: 256 Elemente - 0..255. :-) –

Antwort

10

Es gibt eine Standard-Bibliothek Container std::set genannt ... Ich weiß nicht, delphi, sondern ein einfaches Element im Set Betrieb unter Verwendung des find Verfahren und Vergleichen des Ergebnisses mit end umgesetzt würden:

std::set<int> s; 
s.insert(5); 
if (s.find(5) != s.end()) { 
    // 5 is in the set 
} 

Andere Operationen als Algorithmen in der Standard-Bibliothek implementiert (std::union, std::difference ...)

0

Ja, es ist eine C++ STL set Container-Klasse des könnten kritisiert auf p. 491 von Stroustrups TC++ PL (Sonderausgabe).

2

In C++ ist nichts in ähnlicher Weise integriert. Abhängig von Ihren Bedürfnissen können Sie Bit-Flags und bitweise Operationen oder den std::bitset Standardcontainer (neben std :: set, natürlich) verwenden. Wenn Sie C++ Builder verwenden, gibt es auch eine Klasse, die Delphi-Sets simuliert - suchen Sie System.hpp für etwas wie BaseSet oder SetBase oder ähnliches - ich erinnere mich nicht an den genauen Namen.

0

STL-Algorithmus hat die folgenden From MSDN

set_difference alle Elemente Unites, die zu einem sortierten Ursprungsbereich gehören, jedoch nicht zu einem zweiten sortierten Quellbereich zu einem einzigen, sortierte Zielbereich, in dem das Ordnungskriterium kann durch ein binäres Prädikat angegeben werden.

set_intersection alle Elemente, die sowohl Unites sortiert Quelle gehören Bereiche zu einem einzigen, sortiert Zielbereich, in dem die Ordnungskriterium durch ein binäres Prädikats angegeben werden.

set_symmetric_difference vereinen alle der Elemente, die zu einem gehören, aber nicht beide, den sortierten Quellenbereiche in einen einzigen, sortierte Zielbereich, in dem das Ordnungskriterium durch ein binäres Prädikat angegeben werden.

set_union vereint alle der Elemente, die zumindest eine von zwei sortierten Ursprungsbereiche in einem einzigen, sortiert Zielbereich, in dem die Ordnungskriterium durch ein binäres Prädikat kann gehören angegeben werden.

+0

Dies sind Algorithmen, die auf geordnete Container (auf Paaren von Iteratoren zu geordneten Elementen, um genau zu sein) operieren, nicht auf den Container selbst. –

Verwandte Themen