读书人

100分两个有关问题一个关于hash_m

发布时间: 2012-03-06 20:47:55 作者: rapoo

100分,两个问题,一个关于hash_map的erase的使用,另一个关于结构体动态指定成员
1,我建了一个hash_map,然后放了5个成员进去。当我用一个迭代器遍历这个hash_map,遍历一个就删除一个,奇怪的是,遍历完之后,发现少了一个。更奇怪的是,这个成员用find,一直都能找到,即使在遍历完最后一个时。如果不执行erase操作,就没有问题,请教有可能是怎么回事?有谁遇见过类似的情况么?

2.我现在将一个结构体中的每个成员的名字放进一个list <string> 中,然后想让一个用户只拿这个list去读出这个结构体中的每一个成员的值,可以实现么?
100分相送

[解决办法]
第一题贴代码啊

第二题java中有反射. c++不知有什么代替的办法. mark
[解决办法]
第二题,在C++还没见过怎么做.
[解决办法]
第二题貌似没有什么办法 ...

如果成员种类不多,
可以考虑如下方式:

string str;
...
if(str== "test ") ??=struct.test;
if(str== "buffer ") ??=struct.buffer;
...

C++中没有办法操作 变量/成员 名字
[解决办法]
类似于使用一串判断过程,
符合特定条件读取某个特定成员 ..

如果成员比较多就有点麻烦了。
[解决办法]
1 你的遍历方法?

预计是遍历过程中漏掉了最后的元素
[解决办法]
for(...)
{
...
hash_map.erase( hash_map.begin() ); //不要使用for中的迭代器删除
}
[解决办法]
贴代码。
[解决办法]
话又说回来了,没事不要用hashmap。
如果不是海量真随机数据,hashmap根本就不会比map快。
99.99%情况下,hash都是被滥用的。

读书人网 >C++

热点推荐