C++ list容器-53-链表大小操作和插入删除操作

这篇接着前面的list容器的基本概念之后,这里继续学习list容器的常用API。先学习list的大小相关操作,也就是元素个数,判断是否为空,重置大小。然后学习list容器的插入和删除,插入是重点,至少有头尾插入和中间任意元素位置插入。

1.list容器大小操作

函数原型

这几个api,我们前面学习其他容器都接触过。下面使用简单代码来测试下

#include <iostream>
#include <string>
#include <list>
using namespace std;


void printList(const list<int>& l)
{
    for(list<int>::const_iterator it = l.begin(); it != l.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

}

void test01()
{
    // list 大小
    list<int> li;   // 默认构造函数

    // 添加数据
    li.push_back(10);
    li.push_back(20);
    li.push_back(30);
    li.push_back(40);
    li.push_back(50);

    printList(li);
    cout << "current size:" << li.size() << endl;

    // 判断是否为空
    cout << "is Empty? " << li.empty() << endl;

    // 重置list的大小
    li.resize(3);
    cout << "current size:" << li.size() << endl;
    printList(li);
  
}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果:

上面判断是否为空,0表示false, 1表示true

 

2.list容器的插入操作

插入相关操作API函数原型

第一个push_back() 在容器尾部插入一个元素,这个我们已经使用过,非常熟悉。先联系头尾部添加和删除操作。

#include <iostream>
#include <string>
#include <list>
using namespace std;


void printList(const list<int>& l)
{
    for(list<int>::const_iterator it = l.begin(); it != l.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

}

void test01()
{
    // list 大小
    list<int> li;   // 默认构造函数

    // 尾部加数据
    li.push_back(10);
    li.push_back(20);
    printList(li);

    // 头部加数据
    li.push_front(100);
    li.push_front(200);
    printList(li);

    // 尾部删除
    li.pop_back();
    printList(li);

    // 头部删除
    li.pop_front();
    printList(li);
    
}


int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果:

然后看看这几个插入操作

#include <iostream>
#include <string>
#include <list>
using namespace std;


void printList(const list<int>& l)
{
    for(list<int>::const_iterator it = l.begin(); it != l.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

}

void test01()
{
    // list 大小
    list<int> li;   // 默认构造函数

    // 尾部加数据
    li.push_back(10);
    li.push_back(20);
    printList(li);

    // 在pos位置插入元素e 
    list<int>::iterator it = li.begin();
    li.insert(++it, 30);  // 注意++it 和it++的区别
    printList(li);

    // 在迭代器位置插入n个元素e
    li.insert(++it, 3, 70);
    printList(li);

    // 在迭代器位置后插入一个容器的区间内元素
    list<int> li2;   // 默认构造函数

    // 尾部加数据
    li2.push_back(100);
    li2.push_back(200);
    li.insert(++it, li2.begin(), li2.end());
    printList(li);
    
}


int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

 

3.list容器的删除操作

最后看看删除相关的API

#include <iostream>
#include <string>
#include <list>
using namespace std;


void printList(const list<int>& l)
{
    for(list<int>::const_iterator it = l.begin(); it != l.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

}

void test01()
{
    // list 大小
    list<int> li;   // 默认构造函数

    // 尾部加数据
    li.push_back(10);
    li.push_back(20);
    li.push_back(30);
    li.push_back(30);
    li.push_back(40);
    printList(li);

    // 删除pos位置数据
    list<int>::iterator it = li.begin();
    li.erase(++it);
    printList(li);

    // 删除值等于30的全部元素
    li.remove(30);
    printList(li);

    // 清空
    li.clear();
    cout << "current size: " << li.size() << endl;

    
}


int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值