2 Stimmen

Boost::binär<>

Gibt es in den Boost-Bibliotheken irgendetwas, das binär ist? Zum Beispiel würde ich gerne schreiben:

binary<10101> a;

Ich schäme mich zuzugeben, dass ich versucht habe, sie zu finden (Google, Boost), aber ohne Ergebnis. Sie sind etwas über binary_int<> erwähnen, aber ich konnte nicht finden, weder wenn es verfügbar ist, noch welche Header-Datei soll ich einschließen;

Danke für die Hilfe.

12voto

Johannes Schaub - litb Punkte 479831

Es gibt die BOOST_BINARY Makro. wird wie folgt verwendet

int array[BOOST_BINARY(1010)];
  // equivalent to int array[012]; (decimal 10)

Um bei Ihrem Beispiel zu bleiben:

template<int N> struct binary { static int const value = N; };
binary<BOOST_BINARY(10101)> a;

Sobald ein Compiler die benutzerdefinierten Literale von C++0x unterstützt, können Sie schreiben

template<char... digits>
struct conv2bin;

template<char high, char... digits>
struct conv2bin<high, digits...> {
    static_assert(high == '0' || high == '1', "no bin num!");
    static int const value = (high - '0') * (1 << sizeof...(digits)) + 
                             conv2bin<digits...>::value;
};

template<char high>
struct conv2bin<high> {
    static_assert(high == '0' || high == '1', "no bin num!");
    static int const value = (high - '0');
};

template<char... digits>
constexpr int operator "" _b() {
    return conv2bin<digits...>::value;
}

int array[1010_b];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X