Dynamisch Mengen in C++
-
Folgende Zeile müßte mal wieder nach BCB übersetzt werden:
if Key in [VK_BACK, VK_DELETE, VK_UP, VK_DOWN, 32..255] then
Also, ist es möglich dynamische Mengen a la {VK_BACK, VK_DELETE, etc] in C++ zu nutzen?
-
Hallo
Direkt läßt sich diese Syntax nicht in C++ umsetzen.
std::set ist eine Möglichkeit um den Effekt zu erreichen.bis bald
akari
-
Oder eben per Hand:
if(Key == VK_BACK || Key == VK_DELETE || Key == VK_UP || Key == VK_DOWN || Key >=32 && Key <=255) { ... }
-
Was auch geht
Set<char, 0, 255> Keys; Keys << VK_BACK << VK_DELETE << VK_UP << VK_DOWN; if ( Keys.Contains(Key) ) { // ... }
Sieht man öfters bei Mengenparametern von VCL-Funktionen.
Nur, wie kriegt man den Bereich 32..255 da hinein, nur mit einer for-Schleife ?
-
Ups, das muss
Set<BYTE, 0, 255>
heißen.
-
nn schrieb:
Nur, wie kriegt man den Bereich 32..255 da hinein, nur mit einer for-Schleife ?
template <typename T, unsigned char Min, unsigned char Max> System::Set <T, Min, Max> includeRange (const Set <T, Min, Max>& theSet, T first, T last) { Set <T, Min, Max> retval = theSet; for (unsigned char i = (unsigned char) first; i != ((unsigned char) last) + 1; ++i) retval << (T) i; return retval; } template <typename T, unsigned char Min, unsigned char Max> System::Set <T, Min, Max> excludeRange (const Set <T, Min, Max>& theSet, T first, T last) { Set <T, Min, Max> retval = theSet; for (unsigned char i = (unsigned char) first; i != ((unsigned char) last) + 1; ++i) retval >> (T) i; return retval; }