请教个multimap容器的基础问题

blueboy82006 blueboy82006 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

multimap和map默认都是以 键值 的 < 操作进行排序插入的。
下述代码本意是让key值按字符串比较大小,再插入相应的结点。



multimap<char*,int> testmap;

char s1[10]="de3456789";
char s2[5]="abcd";
char* p=s1;

testmap.insert(make_pair(s1,12));
testmap.insert(make_pair(s2,17));
testmap.insert(make_pair(p,8));



(问题1:)但实际是比较了字符串地址的大小了吧?因为multimap<char*,int>的key是一个字符指针。不知道是不是这样子?

另外,如果是下面这样:



multimap<string,int> testmap;

char s1[10]="de3456789";
char s2[5]="abcd";

string str1(s1),str2(s2);
testmap.insert(make_pair(str1,12));
testmap.insert(make_pair(str2,17));




(问题2:)容器是否是按string值来进行 < 的比较,再insert?

(问题3:)这种情况testmap需要格外开辟空间来存放string值吗?还是直接string的地址空间?


谢谢~
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
blueboy82006
C++ 语言 65,214 成员 250,514 内容