范围的C++映射
问题描述:
我正在开发一个关于C++的项目,并且我对这个语言很陌生。范围的C++映射
我在一个函数,必须做一些从十六进制数字0x00到0xFF的东西,我被告知我可以用地图做到这一点。
问题是,到目前为止,在我看到的例子中,我刚刚看到它仅用于一个条目,而我需要根据特定范围完成某些操作。
有没有一种方法可以在地图中做到这一点,或者我是否需要使用别的方法来完成所需的功能?
答
如果理解正确,你在地图中存储了一些值,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));
这就是你需要的吗?
+1就我所理解的问题而言,需要对某些范围进行相同的操作。人们确实可以将这个“行动”存储在每个上限内。我想,OP是要实现类似状态机的东西,因此我建议不用地图尝试。 – Sam 2013-02-23 21:28:46
呃,挺好。预期的行动是,如果v落在某个范围内,给出SIC/XE机器在给出这两个字节时的预期指令。 – 2013-02-24 01:39:50