我正面临一个有趣的局面,并希望与所有人分享.当然,如果有人可以提供帮助,我将不胜感激!
#include "stdafx.h"
#include <map>
#define DEF_NAME1 "NAME1"
#define DEF_NAME2 "NAME2"
#define DEF_NAME3 "NAME3"
#define DEF_NAME4 "NAME4"
struct TInfo
{
const char * TName;
const char * TArray1[100];
const char * TArray2[100];
};
typedef std::map<const char*, TInfo*> TInfoMap;
typedef std::pair<const char*,TInfo*> TInfoPair;
static TInfoMap tinfomap;
TInfo TInfoArray[] =
{
{DEF_NAME1,{""}, {""}},
{DEF_NAME2,{""}, {""}},
{DEF_NAME3,{""}, {""}},
{DEF_NAME4,{""}, {""}}
};
TInfoMap* GetTInfoMap()
{
for (int i = 0; i < 3 ; i++ )
tinfomap.insert(TInfoPair(TInfoArray[i].TName,&TInfoArray[i]));
return &tinfomap;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *name="NAME3";
TInfo* ptr = new TInfo();
TInfoMap* map1 = GetTInfoMap();
if ( map1->find(name) == map1->end() )
printf("Not found");
else
printf("Found!");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在Windows 2003 Server 64bit上.我得到输出"发现!" 当我在发布模式下编译/运行此程序时,当我在调试模式下编译/运行此程序时输出为"未找到".
任何的想法?
问候,
Azher