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都是被滥用的。