容器"/>
Think in in C++[vol2]【7】通用容器
1.容器及其分类总结
分类 | 容器 |
---|---|
序列容器 | vector、list、deque |
容器适配器 | queue、stack、priority_queue |
关联式容器 | set、map、multiset、multimap |
- 1)vector:一种允许快速随机访问其中元素的线性序列。缺点是:在中间插入元素开销大;
- 2)list:双向链表,优点是:很方便地在任何地方插入元素;
- 3)deque(读作deck):双端队列
- push_back():插入序列尾部(适用于vector、list、deque),push_front():插入序列前端(适用于list、deque);
//Container装的是指向Shape类型对象的地址typedef std::vector<Shape*> Container;typedef Container::iterator Iter;Container shapes;shapes.push_back(new Circle);shapes.push_back(new Square);shapes.push_back(new Triangle);for (Iter i = shapes.begin(); i != shapes.end() ; ++i)(*i) -> draw();//Sometime laterfor (Iter j = shapes.begin(); j != shapes.end(); ++j){delete *j;}
- 注意:STL容器确保在其自身被销毁时将调用其包含的每个对象的析构函数,而指针无析构函数,因此需要用户用delete删除它们。
for (Iter j = shapes.begin(); j != shapes.end(); ++j)delete *j;
2.迭代器
- 迭代器是为实现通用而做的抽象,它与不同类型的容器一起工作而不必了解那些容器的底层结构。
3.集合(set)
- 集合(set)仅接受每个元素的副本。由于std::set用一棵平衡树数据结构来存储元素以提供快速的查找,因此set的元素已经排好序。
- 1)如果仅为了得到一个排好序的序列,不必使用set,可以在不同的STL容器使用sort()。2)如果只想做查找操作,使用set会便利许多,其成员的 find() 比普通的find()速度快得多。
更多推荐
Think in in C++[vol2]【7】通用容器
发布评论