STL list 的循环

#include <iostream>
#include <list>
int main()
{
// 方法一:
list<int> Day = {1,2,3,4,5,6};
auto &point = Day.front();
for (auto &point :Day)
{
cout << "lalalaland" << endl;

}

//方法二:
cout << "---------------------" << endl;
list<int> ::iterator it;
for ( it = Day.begin(); it!=Day.end(); it++)
{

cout << "lalaland2" << endl;

}
// 方法三:
cout << "-------------------" << endl;

for each (auto &point in Day)
{
cout << "lalaland3" << endl;
}

using namespace std;



getchar();
return 0;

}


### C++ STL List 使用与实现 #### 定义与基本特性 `std::list` 是双向链表容器,允许高效的插入和删除操作。不同于 `vector` 或者 `deque` 这样的连续内存存储结构,`list` 的元素分布在不同的位置上,通过指针相互链接[^1]。 ```cpp #include <iostream> #include <list> int main() { std::list<int> myList; // 插入元素到列表中 myList.push_back(10); myList.push_front(20); // 输出列表中的第一个和最后一个元素 std::cout << "Front element: " << myList.front() << "\n"; std::cout << "Back element: " << myList.back() << "\n"; return 0; } ``` #### 基本操作函数 - **push_back**: 向列表尾部添加新元素。 - **push_front**: 向列表头部添加新元素。 - **pop_back**: 移除列表尾部的元素。 - **pop_front**: 移除列表头部的元素。 - **insert**: 在指定迭代器前插入新的元素或范围内的多个元素。 - **erase**: 删除由给定迭代器指向的一个元素或是两个迭代器之间的所有元素。 #### 高效的操作特点 由于内部采用的是双向循环链表形式,因此对于频繁发生的增删动作来说效率很高;但是访问特定索引处的数据则相对较慢,因为这需要遍历整个链条来定位目标节点的位置。 #### 实现细节探讨 在实际应用当中,为了提高性能并减少碎片化现象的发生,某些库可能会对标准模板库(`STL`)里的`list`做出改进优化措施。例如,在游戏开发领域广泛使用的`EASTL`(Electronic Arts Standard Template Library),就针对原生`STL`进行了扩展增强处理[^2]。 #### 示例程序展示 下面给出一段简单的例子用于说明如何创建一个整数类型的`list`对象,并对其进行一些基础性的读写操作: ```cpp #include <iostream> #include <list> void printList(const std::list<int>& l) { for (auto it = l.begin(); it != l.end(); ++it) std::cout << *it << ' '; std::cout << '\n'; } int main(){ std::list<int> numbers; // 添加几个数值进入列表 numbers.push_back(789); numbers.push_front(456); numbers.push_back(123); // 打印当前列表状态 printList(numbers); // 对列表执行排序算法 numbers.sort(); printList(numbers); // 清空列表之前先打印其大小 std::cout << "Size before clear(): " << numbers.size() << "\n"; numbers.clear(); // 检查清空后的列表是否为空 if (numbers.empty()) std::cout << "The list is now empty.\n"; return 0; } ``` 此代码片段展示了如何向`list`中加入数据项、调用成员方法获取前后端元素以及利用内置工具完成升序排列等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值