望哪位高人,替 赤之类 解决一下在VC++6.0中使用容器map错误的问题
#include<iostream>
#include<string>
#include<map>
using namespace std;
typedef struct tagString{
tagString(){str="";}
tagString(const char *cch){str=cch;}
tagString(const string &cstr){str=cstr;}
string str; }sctString;
typedef struct tagMyHeaderType{
string buf1;
string buf2;
string first1;
string first2;
bool xing;//xing=0;为数(字符串)字型 xing=1为 字符串型
int count;
}MHT;
int main()
{ map<int,char> m; //m.insetr(pair<int,char>(i,char(i)));
pair<int,char> pr; //m.insert(pr);
pair<map<int,char>::iterator,bool> pib;
for(int i=0;i<128;i++)
{
pr.first=i;pr.second=char(i);
pib=m.insert(pr);// (A)
//该程序第一部分编译虽然能通过,但是有很多警告问为什么?
//怎么写才能消除它的警告.
//(1) pib=m.insetr(pair<int,char>(i,char(i)));
//在VC++6.0 中象 (1) 这样插入文件将编译错误
//书上这样插入是可以的.谁能告诉我,VC++6.0中为什么不能这样插入.
if(!pib.second)cout<<" bool = "<<pib.second;
}
//第二部分程序 ********************************************************************
map<sctString,MHT> mp;
pair<sctString,MHT> prm;
prm.first.str="A"; prm.second.buf1="buf1";
//对结构体中的数据进行初始化,实际程序每项都作了初始化,这里就不详细写了.
//这个程序 是一个大型程序的一部分. 我只将其中有错误的部分给取出来,并作了简化.
//你不要管这个程序是做什么的,这个程序主要是语法错误. 你们替我看看到底错在什么地方.
//为什么编译总出错,且又有那么多警告,望哪位高人替赤之类指点迷经.
//VC++6.0中对容器map的使用标准与教材上怎么不太一样.
mp.insert(prm);
map<sctString,MHT>::iterator p=mp.begin();
while(p!=mp.end())
{
if((p->second).xing==0)cout<<"\n"<<(p->second).first1;
else cout<<"\n"<<(p->second).buf1;
if(((p->second).buf2.size())>0)cout<<"\n"<<((p->second).buf2);
cout<<"\n"<<(p->second).first2;
p++;
}
sctString sctstr; cin>>sctstr.str;
p=mp.find(sctstr);
if(p!=mp.end())cout<<(p->second).count;
return 0;
}