200919阶段一C++STL容器

目录

  • 一、学习的知识点
    • 标准模板库
      • Container容器
        • vector向量
        • deque双端队列
        • list链表
      • 迭代器
  • 二、上课没有听懂或者没有理解的地方
  • 三、当天学习的收获
  • 四、作业的思路、不会的地方
  • 五、其他需要反馈的问题

一、学习的知识点

标准模板库

包含容器、算法、迭代器、函数对象、分配器、适配器

Container容器

各种数据结构,容器类是容纳、包含一组元素或元素集合的对象

  1. 同类容器、异类容器
  2. 顺序容器、关联容器
  3. 有序、便于管理
  4. 所有的容器都继承容器类

vector向量

  1. 数组名是地址,长度是固定的,地址在内存中是连续的;保存同类型的数据;访问:下标访问、地址偏移
  2. 向量:顺序容器,地址连续,用于容纳不定长的线性序列,动态改变大小;访问:下标访问(veclist[0])、迭代器(操作容器的指针)
  3. 相当于类模板
#include
int main()
{vector<int> veclist;//会走构造//vector veclist(2,100,100);//长度是2,内容是100vector<int>::iterator it;//迭代器是属于容器的,容器是什么类型,迭代器就是什么类型veclist.size();//返回向量元素的个数veclist.push_back(1);//在尾巴处插入数据veclist.insert(veclist.begin(),4);//在向量头插入数据4veclist.erase(veclist.begin()+2,veclist.begin()+4);//根据迭代器位置删除某个,根据迭代器范围删除一片veclist.clear();//删除所有veclist.pop_back();//删除最后一个元素//访问it=veclist.begin();*it;it++;
}

deque双端队列

和向量没多少区别,可以从两端入队或者出队

#includedeque<Cstaff *> deq;//deque 队列
deque<Cstaff *>::iterator deit;//迭代器
Cstaff *st1=new Cstaff(1001,"admin","123456");
Cstaff *st2=new Cstaff(1002,"admin","123456");
deq.push_back(st1);//插入

list链表

  1. 地址不连续,不能通过下标访问
  2. 存放双向链表
  3. 拼接
#includelist<Cstaff> stafflist;
list<Cstaff> stafflist_tmp;
list<Cstaff>::iterator liit;//迭代器
stafflist.push_back(Cstaff(1001,"admin","123456",1));//插入
stafflist.push_back(Cstaff(1002,"admin","123456",1));
for(liit=stafflist.begin();liit!=stafflist.end();++liit)
{cout<<(*liit).getID()<<endl;
}stafflist.splice(stafflist.end(),stafflist_tmp);//两条链表拼接

迭代器

迭代器是面向对象版本的指针,提供了访问容器、序列中每个元素的方法

二、上课没有听懂或者没有理解的地方

三、当天学习的收获

学习了容器,可以使用许多已经封装好的工具

四、作业的思路、不会的地方

未开始

五、其他需要反馈的问题


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部