1

私は C++ のプロジェクトに取り組んでおり、その言語は初めてです。

私は 16 進数 0x00 から 0xFF までの範囲の何かをしなければならない関数を使用していますが、マップでそれを行うことができると言われました。

問題は、これまでに見た例では、特定の範囲に応じて何かを行う必要があるときに、1 つのエントリにのみ使用されているのを見ただけです。

マップでそれを行う方法はありますか、それとも目的の機能を実行するために何か他のものを使用する必要がありますか?

4

1 に答える 1

1

正しいことを理解していれば、0xFF の 0x00 からの値をキーにして、いくつかの値をマップに保存しますか? 考えられる解決策は次のとおりです。

typedef std::map<unsigned char, int> values;
void print( values::const_iterator begin, values::const_iterator end );

values v;
// print range [0x01,0x20]
print( v.lower_bound( 0x01 ), v.upper_bound( 0x20 ) );
// print range [0x10,0x40[
print( v.lower_bound( 0x10 ), v.lower_bound( 0x40 ) );
// print range ]0x20,0x50[
print( v.upper_bound( 0x20 ), v.lower_bound( 0x50 ) );

それはあなたが必要とするものですか?

于 2013-02-23T21:18:04.600 に答える