Professional C++读书笔记02

2012-05-16

Chapter04

1、容器分类

         顺序容器:向量vector,列表list。双端队列deque→存储一个元素序列

         容器适配器:队列queue,优先队列priority queue,栈stack→建立在三种顺序容器之上的接口

         关联容器:集合set,映射map(包含多集,多映射)→建立了键与值的关联

         在set中,键本身就是值

         特殊容器:位集bitset

2、set按有序方式存储元素,插入、删除、查找都是O(logn)

         底层用平衡二叉树实现→使用情况:如果希望插入删除和查找性能相当

         set不允许有重复的元素       ∴可用multiset存储重复的元素

3、map存储了键/值对          元素按键排序,其他方面与set相同

         map、set

         应用举例:set集合会忽略重复的单词

         set<string>s;

         set<string>::iterator j;

         string t;

         while(cin>>t)

                   s.insert(t);

         for(j=s.begin() ; j!=s.end() ; j++)

                   cout<<*j<<endl;

map集合可以进行key,value的映射(统计单词个数)

         map<string,int>M;

         map<string,int>:iterator j;

         string t;

         while(cin>>t)

                   M[t]++;

         for(j=M.begin() ;j!=M.end(); j++)

                   cout<<j->first<<”   ”<<j->second>>endl;

4、bieset:标志集合,每个标志用一位表示(无插入删除方法)

         但可用O(1)进行查找

5、STL算法:用模板实现,在大多数不同容器类型都能使用

         STL把数据(容器)与功能(算法)分离

         但有些容器以类方法的形式提供某些算法(优先使用,效率更高)

         例如vector v;

         v.find()      //类方法

         find(…)      //STL算法

原文地址:https://www.cnblogs.com/yangtianxing/p/2510993.html