map中如何将key转换成char*【超级经典的将string转换成char*】
2012-11-08 14:33
471 查看
优化前与优化后做个简单比较,明教主Orz...
以前我们利用map函数将字符串转换成整型时,一般习惯性的都是map<string,int>mapstr,虽然很好用,但是数据量大一些就会发现效率N差劲。所以,为了提高效率我们把map<string,int>mapstr改成map<char*,int>mapstr,可以用了之后发现结果总不是我们想要的。这是为什么呢?
因为,key中存放的是指针,所以找不到。
因此,我们需要重载操作符,使得查找是比较指针所对应的字符串就行了。
struct cmp
{
bool operator()(const char *s1, const char *s2)
{
return strcmp(s1,s2)<0;
}
}
map<char*,int,cmp>;
注意输入的时候指针指向的位置,所以不能只定义一个字符串。
之后直接查找就行了。
以前我们利用map函数将字符串转换成整型时,一般习惯性的都是map<string,int>mapstr,虽然很好用,但是数据量大一些就会发现效率N差劲。所以,为了提高效率我们把map<string,int>mapstr改成map<char*,int>mapstr,可以用了之后发现结果总不是我们想要的。这是为什么呢?
因为,key中存放的是指针,所以找不到。
因此,我们需要重载操作符,使得查找是比较指针所对应的字符串就行了。
struct cmp
{
bool operator()(const char *s1, const char *s2)
{
return strcmp(s1,s2)<0;
}
}
map<char*,int,cmp>;
注意输入的时候指针指向的位置,所以不能只定义一个字符串。
之后直接查找就行了。
相关文章推荐
- char*,const char*,char[],string之间的转换问题。
- c++如何将string 转换为char*
- 如何在在Visual C++ .NET 中將System::String* 转换为 Char*
- char*,const char*和string的相互转换(转)
- [转载]char*,const char*和string的相互转换
- char*,const char*和string 三者转换
- char*,const char*和string的相互转换
- Cstring,string,char*,char[]之间的转换
- c++中如何将int转换成string,而不是char[]
- char*,const char*和string的相互转换
- 【转载】char*,const char*和string 三者转换
- unicode下各种类型转换,CString,string,char*,int,char[]
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- char*, char[] ,CString, string的转换
- char*,const char*和string 三者转换
- string如何转换为char
- char*,char[],string,cstring 转换
- C++中如何将char类型转换为String 类型
- char*,const char*和string 三者转换
- string类字符串,char数组,string数组,StringBuffer之间如何相互转换