持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
1 list 数据存取
1.1 功能描述:
- 对list容器中数据进行存取
1.2 函数原型:
front();//返回第一个元素。back();//返回最后一个元素。
1.3 代码示例:
#include <list>
//数据存取
void test01()
{
list<int>L1;
L1.push_back(10);
L1.push_back(20);
L1.push_back(30);
L1.push_back(40);
//cout << L1.at(0) << endl;//错误 不支持at访问数据
//cout << L1[0] << endl; //错误 不支持[]方式访问数据
cout << "第一个元素为: " << L1.front() << endl;
cout << "最后一个元素为: " << L1.back() << endl;
//list容器的迭代器是双向迭代器,不支持随机访问
list<int>::iterator it = L1.begin();
//it = it + 1;//错误,不可以跳跃访问,即使是+1
}
int main() {
test01();
system("pause");
return 0;
}
1.3 总结:
-
list容器中不可以通过[]或者at方式访问数据
-
返回第一个元素 --- front
-
返回最后一个元素 --- back
-
可以利用for循环和尾插法的形式对list容器进行赋值
-
l.at(i);这两种都是错误的
-
l[i] list容器的迭代器只能访问到第一个元素和最后
-
一个元素,访问其他的元素需要指针的偏移
-
system("pause")和system("pause")作用和效果一样,因为dos命令是不区分大小写的。
-
该语句是暂停的意思:等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果
-
list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。
-
list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。
- list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。
- 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。