www.5213.net > C++ STL mAp循秩访问效率

C++ STL mAp循秩访问效率

对于你说的string,不需要重载==,>,< 因为string都已经重载了 如果 你新定义的一个类,那么必须要重载==,>,< 等方法 如果不重载是错误的

你可以百度一下:字典树 使用字典树的话,字符串的查找效率仅与要查找的字符串长度有关,而与容器内的字符串数量无关。

map将key和value组成的pair作为元素,根据key的排序准则自动将元素排序,map中的存取封装了二叉树,因此map按照自己的算法来进行存取,跟你给元素赋值的顺序无关,无论哪一个先赋值最终的map中数据排列属性都是:m[3]=2;m[6]=7;m[9]=3;m[100]=9;...

不会,string是合法的map键. string1 < string2语句是正确的 况且illegal instruction不是指C++的语句,是底层的机器指令发生非法操作 应该是内存访问非法问题

可以吧,map里面的结构是平衡2叉树,这样便于随机查找任意值

key不存在的话则创建一个pair并调用默认构造函数

一样快,因为内部都是一个数据结构,红黑树

有,java有Map接口,然后有各种实现 HashMap、TreeMap 其中TreeMap就和stl中的map实现一样,用红黑树实现的

首先,应该查找键。你写把学号作为键,却查找的是姓名值,就浪费了这个数据结构的效率。应该 姓名-学号对应,查姓名,直接出学号。。 #include #include using namespace std; int main() { char ch[10]; map m; m.insert(pair("张三",1)); m.in...

你不会是在循环里用erase吧。 这样的原先的迭代器就失效了。 你说的delete是什么? 同时erase是返回下一个迭代器。因为要用 map stl for(it = stl.begin(); it != stl.end()) { if(),, it = stl.erase(it ); else it ++ // 或者用 st.erase(it++) }

网站地图

All rights reserved Powered by www.5213.net

copyright ©right 2010-2021。
www.5213.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com