10013list04数据存取

160 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。

  1. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。
  2. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。