list

一,list的内存空间

vector使用的是连续的内存空间,list使用的是离散的内存空间。每当往list中插入一个元素,就会为这个元素分配一块内存空间,不同的元素的内存空间通过指针链接在一起。因此,list对内存空间的运用非常精准,一点也不浪费,而且对于任何位置的插入与删除操作,list永远是常数时间。

 

二,list的迭代器

list不能像vector那样以普通的指针作为迭代器,因为其内存空间不是连续的。由于list的底层是一个双向循环链表,迭代器必须具有前移、后移的能力,list的迭代器不支持随机访问操作。list还有一个重要的性质,插入与删除操作不会导致原迭代器失效。这在vector上是不成立的,因为vector的插入操作,可能导致内存的重新配置。

 

三,list的基本操作

1,初始化操作

 

int nums[] = {1, 2, 3};
//建一个含三个默认值是0的元素的链表
list<int> a1(3);

//使用数组初始化链表
list<int> a2(nums, nums + 3);

 

 

2,添加与获取元素

 

list<int> myList;
//在链表尾部插入元素
myList.push_back(1);
myList.push_back(2);

//获取头、尾结点的元素值
int x = myList.front();
int y = myList.back();

 

 

3,删除元素

 

list<int> myList;
myList.push_back(1);
myList.push_back(2);

//删除队尾的元素,并且不会返回这个元素,pop_back()返回值为void
mylis.pop_back();

//删除指定位置的元素
myList.erase(myList.begin());

 

4,其他常用操作

 

//判断容器是否为空,如果容器中没有元素返回true,否则返回false
myList.empty();

//获取容器中元素的数目
int size = myList.size();

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值