我在最后一天一直在解决这个问题,但我仍然对以下代码的解决方案感到迷茫:
#include <stdio.h>
#include <iostream>
#include <map>
int main()
{
std::map<char *, char *> ourmap;
std::map<char *, char *>::iterator ourmap_it;
ourmap["hello"] = "world";
ourmap["hello"] = "earth";
char * key = new char[5];
key[0] = 'h';
key[1] = 'e';
key[2] = 'l';
key[3] = 'l';
key[4] = 'o';
char * key_other = new char[5];
key_other[0] = 'h';
key_other[1] = 'e';
key_other[2] = 'l';
key_other[3] = 'l';
key_other[4] = 'o';
ourmap[key] = "venus";
ourmap[key] = "mars";
ourmap[key_other] = "jupiter";
for (ourmap_it = ourmap.begin(); ourmap_it != ourmap.end(); ++ourmap_it)
{
printf("map[%s] %s\n", ourmap_it->first, ourmap_it->second);
}
ourmap.clear();
delete key;
delete key_other;
return 0;
}
如果您find
对动态键执行 , ,则键不会被覆盖,行为相同。输出解释得更详细一点
map[hello] earth
map[hello] mars
map[hello] jupiter
问题 1
在with和with的情况下,为什么 amap
没有find
不同的两个值等效。const char *
@key
@key
@key_other
问题2
我应该使用不同的容器吗?或使用不同的代码(以不同的方式定义变量)。
在上面的代码中使用动态键没有意义,但我的实际代码需要动态键,如果键值是从文件中读取的,因为我不知道给定键的大小文件,它必须是动态的。问题是虽然我可以设置键,但我无法取回值。
我正在考虑创建一个我自己的发现,它可以strcmp
通过键来确定等价性,但这似乎很老套,所以SO
在我拒绝之前先咨询一下。
任何帮助都会很棒。谢谢