读书人

C++ map 使用有关问题

发布时间: 2012-03-21 13:33:15 作者: rapoo

C++ map 使用问题求助!
代码如下,请帮忙分析一下:


#include <iostream>
#include <string>
#include <map>

using namespace std;

typedef map <char *, char *> STRING_MAP;

void main(){
char * k;
// k = "key "; // 使用正常
k = new char(4); strcpy(k, "key "); // 这样下面的查找将找不到,不知道是什么原因,请大家帮帮忙!
char * v = "value ";
STRING_MAP map;
map.insert(STRING_MAP::value_type(k, v));
STRING_MAP::const_iterator it = map.find( "key ");
if(it != map.end()){
cout < < "已找到 " < < it-> first < < " : " < < it-> second < < endl;
}else{
cout < < "没找到 " < < endl;
}
}

[解决办法]
你还是用string取代char *吧。
你比较的2个char *指针的地址值,而不是它们所指向的字符串内容。
[解决办法]
map的内部使用operator <()来排序,对char*排序是没有意义的。
可以改用string来作为map的存储对象。
[解决办法]
谁让你用了VC6这个早该淘汰的编译器呢。
要么升级到VC2005express/devcpp,要么忍了。
[解决办法]
typedef map <char *, char *> STRING_MAP;
你里面存储 的是指针 所以你find 找不到

你可以 map <char *, char *> ::iterator iter;
for( iter = map.begin(); iter != map.end(); ++iter )
{ if(!strcmp( *iter, "K))
//找到


但是最好用string

读书人网 >C++

热点推荐