【问题标题】:C++ map for ranges范围的 C++ 映射
【发布时间】:2013-02-23 20:18:41
【问题描述】:

我正在做一个关于 C++ 的项目,我是该语言的新手。

我正在使用一个函数,它必须执行从 0x00 到 0xFF 的十六进制数字,并且有人告诉我我可以使用地图来执行此操作。

问题是,到目前为止,在我看到的示例中,我只看到它仅用于一个条目,而我需要根据特定范围做一些事情。

有没有办法在地图中做到这一点,或者我需要使用其他东西来完成所需的功能?

【问题讨论】:

    标签: c++ map hex range


    【解决方案1】:

    如果理解正确,您将一些值存储在映射中,键是从 0x00 到 0xFF 的值? 可能的解决方案是:

    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 ) );
    

    这是你需要的吗?

    【讨论】:

    • +1 据我了解的问题,需要对某些范围进行相等的操作。确实可以在每个上限内存储该“动作”。我想,OP 可以实现状态机之类的东西,因此我建议尝试不使用地图。
    • 嗯,有点。预期的操作是如果 v 在某个范围内,给出 SIC/XE 机器在给定这两个字节的情况下会执行的预期指令。
    猜你喜欢
    • 2023-01-09
    • 2017-11-03
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多