c++ map使用问题和迭代器问题 编译器:VS2010旗舰版

代码:#include<iostream>#include<map>#include<string>usingnamespacestd;typedefmap<string... 代码:
#include<iostream>
#include<map>
#include<string>
using namespace std;
typedef map<string, string>::const_iterator CIT;
typedef map<string,string>::value_type cit;
template<class T1,class T2>
void show(CIT &c,map<T1,T2>&n)
{
for(c=n.begin();c!=n.end();++c)
cout<<c->first<<"\t"<<c->second<<endl;
}
int main()
{
string str="武汉";
map<string,string> name,name1;
name["范伟"]=str;
name1["牛若军"]="青岛";
name1.insert(name1.end(),cit("朱然","长春"));
name.insert(name1.begin(),name1.end());
cout<<"映射容器name中共有"<<name.size()<<"个元素\n";
CIT it;
show(it,name);
cout<<"查找关键字为“朱然”的所有类容并输出\n";
it=name.find("朱然");
if(it==name.end())
cout<<"没有这个关键字\n";
else
cout<<it->first<<"\t"<<it->second<<endl;
cout<<"关键字等于“范伟”的元素个数为:"<<name.count("范伟")<<endl;
cout<<"删除关键字为" 范伟 "的所有元素。\n";
name.erase("范伟");
cout<<"再次输出映射容器name中的所有元素.\n";
show(it,name);
cout<<"删除映射容器name中所有元素\n";
name.clear();
if(name.empty())
cout<<"映射容器name为空\n";
else
show(it,name);
system("pause");
return 0;
}

错误:
e:\c语言\123\123.cpp : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>e:\c语言\123\123.cpp(19): error C2001: 常量中有换行符
1>e:\c语言\123\123.cpp(19): error C2146: 语法错误: 缺少“]”(在标识符“闱掑矝”的前面)
1>e:\c语言\123\123.cpp(22): error C2001: 常量中有换行符
1>e:\c语言\123\123.cpp(22): error C2146: 语法错误: 缺少“;”(在标识符“涓厓绱燶n”的前面)
1>e:\c语言\123\123.cpp(22): error C2065: “涓厓绱燶n”: 未声明的标识符
1>e:\c语言\123\123.cpp(22): error C2143: 语法错误 : 缺少“;”(在“字符串”的前面)
1>e:\c语言\123\123.cpp(23): error C2146: 语法错误: 缺少“;”(在标识符“CIT”的前面)
1>e:\c语言\123\123.cpp(23): error C2146: 语法错误: 缺少“;”(在标识符“it”的前面)
1>e:\c语言\123\123.cpp(23): error C2275: “CIT”: 将此类型用作表达式非法
1> e:\c语言\123\123.cpp(5) : 参见“CIT”的声明
1>e:\c语言\123\123.cpp(23): error C2065: “it”: 未声明的标识符
1>e:\c语言\123\123.cpp(24): error C2065: “it”: 未声明的标识符
1>e:\c语言\123\123.cpp(26): error C2065: “it”: 未声明的标识符
1>e:\c语言\123\123.cpp(27): error C2065: “it”: 未声明的标识符
1>e:\c语言\123\123.cpp(30): error C2065: “it”: 未声明的标识符
1>e:\c语言\123\123.cpp(30): error C2227: “->first”的左边必须指向类/结构/联合/泛型类型
1> 类型是“'unknown-type'”
1>e:\c语言\123\123.cpp(30): error C2065: “it”: 未声明的标识符
1>e:\c语言\123\123.cpp(30): error C2227: “->second”的左边必须指向类/结构/联合/泛型类型
1> 类型是“'unknown-type'”
1>e:\c语言\123\123.cpp(32): error C2146: 语法错误: 缺少“;”(在标识符“锣冧紵”的前面)
1>e:\c语言\123\123.cpp(32): error C2065: “锣冧紵”: 未声明的标识符
1>e:\c语言\123\123.cpp(32): error C2143: 语法错误 : 缺少“;”(在“字符串”的前面)
1>e:\c语言\123\123.cpp(35): error C2065: “it”: 未声明的标识符
1>e:\c语言\123\123.cpp(41): error C2065: “it”: 未声明的标识符
展开
 我来答
滨崎步最爱
2011-10-16 · TA获得超过665个赞
知道小有建树答主
回答量:705
采纳率:0%
帮助的人:457万
展开全部
cout<<"删除关键字为" 范伟 "的所有元素。\n";
改为
cout<<"删除关键字为\" 范伟 \"的所有元素。\n";

在解决方案窗口中对项目名鼠标右击,选择属性,字符集选择多字节字符集 ,vs2010默认是用unicode字符集的
tuxtoken
2011-10-15 · TA获得超过601个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:501万
展开全部
name["范伟"]=str;
这种用法非常的不方便,很多编译器都会崩溃。,还是改成这样吧
name[“doggy"]=str;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式