首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ map 使用有关问题

2012-03-21 
C++map 使用问题求助!代码如下,请帮忙分析一下:#includeiostream#includestring#includemapusingnam

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

热点排行