容器

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倍扩充。

原文地址:https://www.cnblogs.com/xixixing/p/12115599.html