Think in in C++[vol2]【7】通用容器

编程入门 行业动态 更新时间:2024-10-28 18:25:33

Think in in C++[vol2]【7】通用<a href=https://www.elefans.com/category/jswz/34/1771431.html style=容器"/>

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】通用容器

本文发布于:2023-07-28 19:46:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1291659.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:容器

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!