2013-02-23 110 views
1

我正在开发一个关于C++的项目,并且我对这个语言很陌生。范围的C++映射

我在一个函数,必须做一些从十六进制数字0x00到0xFF的东西,我被告知我可以用地图做到这一点。

问题是,到目前为止,在我看到的例子中,我刚刚看到它仅用于一个条目,而我需要根据特定范围完成某些操作。

有没有一种方法可以在地图中做到这一点,或者我是否需要使用别的方法来完成所需的功能?

回答

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

这就是你需要的吗?

+0

+1就我所理解的问题而言,需要对某些范围进行相同的操作。人们确实可以将这个“行动”存储在每个上限内。我想,OP是要实现类似状态机的东西,因此我建议不用地图尝试。 – Sam 2013-02-23 21:28:46

+0

呃,挺好。预期的行动是,如果v落在某个范围内,给出SIC/XE机器在给出这两个字节时的预期指令。 – 2013-02-24 01:39:50