关于STL的map容器

我把一个东西的所有属性,都保存在map容器中,按“属性名<---->属性值”这么对应起来。但我不希望map自动根据属性名进行排序,所以,我把map<>中的第三个参数,设为... 我把一个东西的所有属性,都保存在map容器中,按“属性名<---->属性值”这么对应起来。但我不希望map自动根据属性名进行排序,所以,我把map<>中的第三个参数,设为自己写的一个类,此类中的()操作符,直接返回true,由此,便屏蔽了map的自动排序。
我的担心是:这样做,会对map::find()函数有什么影响吗?如果有,我该怎么办?
展开
 我来答
passion_wu128
2011-01-06 · TA获得超过1168个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:557万
展开全部
我刚才试了下,程序崩溃!
因为map内部的insert、find等函数是按照一定的排序规则执行的。
如果直接返回true,就没了比较规则会出现错误;

如果非要用find函数自定义个find函数就可以了啊,比如这样:
string find(map<string,string,sort> &m,const &string s)
{
for(map<string,string,sort>::iterator it=m.begin();it!=m.end();++it)
if(s==it->first)
return it->second;
return "";
}
或者可以定义一个子类,重写find函数
class subMap:public map<string,string,sort>
{
public:
string find(const string &s)
{
iterator it;
for(it=begin();it!=end();++it)
{
if(it->first==s)
return it->second;
}
return "";
}
};

这样你用map的其它成员函数时都要重载!
不知道你具体问题是什么,应该还有更好的方法实现。
10...4@qq.com
2012-03-14 · TA获得超过245个赞
知道答主
回答量:119
采纳率:0%
帮助的人:57.3万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式