容器
C++11把Array、Forward-List、无序容器包装成了类。
C++标准库有sort排序函数,有的容器有自己的sort,有自己的,优先用自己的。
序列式容器(Sequence Container):Array数组(固定大小)、Vector向量(单向扩充)、Deque双向队列(两端扩充)、List链表(双向指针)、Forward-List单向链表(单向指针)。元素放进去有先后顺序。
关联式容器(Associative Containers):Set、Multiset,Map、Multimap(有键-值对)。底层是红黑树,元素insert进去慢,但是查找快,适合大量查找的任务。
Multimap要insert键值对,find到的也是键值对的地址。
multimap<long,string> c; char buf[10]; for(long i=0;i<99999;i++) { c.insert(pair<long,string>(i,buf)); //pair一对 } auto pItem=c.find(某个元素); cout<<(*pItem).second<<endl;//first是键、second是值
Set、Multiset放进去的value就是key,所以不可重复,即重复的元素不会被放进去。
Map、Multimap有键-值对,key不同,value可以重复。
无序容器(Unordered Containers):
哈希表,1列篮子,篮子里是链表(篮子后边挂了一串元素),链表不可以很长,否则查找耗时。
篮子一定比元素多,因为有的篮子是空的,后边没挂元素。当元素满后,篮子数2倍扩充。