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”: 未声明的标识符 展开
#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”: 未声明的标识符 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询