[C++]List with iterator(链表的迭代器实现)

本文探讨了STL中链表容器的迭代器实现,重点在于如何为链表的首尾节点分配内存,以优化插入操作并提供end()和rbegin()的功能。同时,文章指出这种实现可能导致的内存泄漏问题,并强调简洁的代码组织结构,如通过insert函数集中处理增删操作。
摘要由CSDN通过智能技术生成

List with iterator(链表的迭代器实现)

我们都知道STL容器内部都有相应的迭代器,本文主要讨论的就是链表内部的迭代器实现。

测试代码

#include <iostream>
#include <string>
using namespace std;
int main() {
    list<int> li;
    cout << "test size" << endl;
    cout << li.size() << endl;
    cout << (li.empty() ? "empty" : "not empty") << endl;
    int n;  // n >= 3
    cout << "test push and pop" << endl;
    li.push_back(1);

    cout << li << endl;

    li.pop_back();
    cout << li << endl;
    li.push_front(1);
    cout << li << endl;
    li.pop_front();
    cout << li << endl;
    li.push_back(1);
    cout << li << endl;
    li.pop_front();
    cout << li << endl;
    li.push_front(1);
    cout << li << endl;
    li.pop_back();

    cin >> n;
    for (int i = 0; i < n; i++) {
        int tmp;
        cin >> tmp;
        li.push_back(tmp);
        li.push_front(tmp);
    }
    cout << li.size() << endl;
    cout << li << endl;
    li.pop_back();
    li.pop_front();
    li.pop_front();
    cout << li << endl;
    cout << "front : " << li.front() << endl;
    cout << "back : " << li.back() << endl;
    cout << (li.empty() ? "empty" : 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值