请教个multimap容器的基础问题
multimap和map默认都是以 键值 的 < 操作进行排序插入的。
下述代码本意是让key值按字符串比较大小,再插入相应的结点。
- C/C++ code
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是一个字符指针。不知道是不是这样子?
另外,如果是下面这样:
- C/C++ code
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的地址空间?
谢谢~
[解决办法]
1.是的 是按照地址大小比较的。
2.当然能
3.是会拷贝一份的!