关于C++ STL 单向链表容器的一些操作

#include <iostream>
#include <forward_list>
using namespace std;

//遍历子函数
void print_forward_list(forward_list<int>& v)
{
    for(forward_list<int>::iterator it = v.begin();it!=v.end();it++)
        cout<<*it<<" ";
    cout<<endl;
}
//排序子函数
bool myCompare(int v1,int v2)
{
    //降序:让第一个数>第二个数
    return v1 > v2;
}
int main()
{
    /*构造函数*/
    //构造函数
    forward_list<int> l1 = {24,15,36,56,89,98};
    //遍历链表l1
    print_forward_list(l1);
    //从头到位复制l1
    forward_list<int> l2(l1.begin(),l1.end());
    //遍历链表l2
    print_forward_list(l2);
    //初始化10个120
    forward_list<int> l3(10,120);
    print_forward_list(l3);//l3遍历
    //初始化复制l3
    forward_list<int> l4(l3);
    print_forward_list(l4);
    /*赋值和交换*/
    //将begin,ned区间中的数据拷贝赋值
    l4.assign(l1.begin(),l1.end());
    print_forward_list(l4);
    //将10个119拷贝赋值给本身
    l4.assign(10,119);
    print_forward_list(l4);
    //拷贝赋值l3
    l4 = l3;
    print_forward_list(l4);
    //将l2与本身的元素交换
    l4.swap(l2);
    print_forward_list(l4);
    print_forward_list(l2);
    /*大小操作*/
    //返回容器中元素的个数
    cout<<"distance:"<<distance(l4.begin(),l4.end())<<endl;
    //empty();//判断容器是否为空
    //重新指定容器的长度为num,若容器变长,则以默认值0填充新位置;若容器变短,则末尾超出容器长度的元素被删除。
    l4.resize(15);
    print_forward_list(l4);
    //重新指定容器的长度为num,若容器变长,则以elem值填充新位置;若容器变短,则末尾超出容器长度的元素被删除。
    l2.resize(3);
    print_forward_list(l2);
    /*插入和删除*/
    //在容器头部插入一个元素
    l2.push_front(250);
    print_forward_list(l2);
    //删除头部第一个元素
    l2.pop_front();
    print_forward_list(l2);
    //在pos位置插入一个elem元素的拷贝,返回新数据的位置
    l2.insert_after(l2.begin(),330);
    print_forward_list(l2);
    //在pos位置插入n个elem数据,无返回值
    l2.insert_after(l2.begin(),3,440);
    print_forward_list(l2);
    //在pos位置插入[beg,end]区间的数据,无返回值
    l2.insert_after(l2.begin(),l1.begin(),l1.end());
    print_forward_list(l2);
#if 0
    //清空容器的所有数据
    l3.clear();
    print_forward_list(l3);
    //删除[beg,end)区间的数据,返回下一个数据的位置
    l3.erase_after(l3.begin(),l3.end());
    print_forward_list(l3);
    //删除pos位置的数据,返回下一个数据的位置
    l3.erase_after(l3.begin());
    //删除容器中所有与elem值匹配的元素
#endif
    l2.remove(440);
    print_forward_list(l2);
    /*数据存取*/
    //返回第一个元素
    cout<<"l2.front:"<<l2.front()<<endl;
    /*反转和排序*/
   //反转链表
   l2.reverse();
   print_forward_list(l2);
   //链表排序
   l2.sort();
   print_forward_list(l2);
   l2.sort(myCompare);//这里需要注意
   print_forward_list(l2);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值