您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        本篇内容主要讲解“怎么使用C++中的list”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C++中的list”吧!
构造函数的使用主要有4个,分别如下
| list() | 构造空的list | 
|---|---|
| list (size_type n, const value_type& val = value_type()) | 构造的list中包含n个值为val的元素 | 
| list (const list& x) | 拷贝构造函数 | 
| list (InputIterator first, InputIterator last) | 用[first, last)区间中的元素构造list | 
不需要传入任何参数,直接利用list类模板定义对象
list<int> l1; //定义int型链表 list<char> l2; //定义char型链表 list<double> l3; //定义double型链表 //上面的三个对象,内容都空
按照上面的定义直接传参即可
list<int> l1(4,5); //定义int型链表,含有4个5 list<char> l2(3,'s'); //定义char型链表,含有3个's' list<double> l3(4,2.3); //定义double型链表,含有4个2.3
即传入一个同类型的list
list<int> l1(4,5); //定义int型链表,含有4个5 list<int> l2(l1); //把l1的内容复制一份给了l2
**这里有个注意点,迭代区间是左闭右开的!**即不包含右边界.
int num[4] = {1,2,3,4};
list<char> l1(3,'w');
list<char> l2(l1.begin(),l1.end());  //end()是最后一个元素位置的下一个元素位置,所以不包括,因此l2的内容是 'w' 'w' 'w'
list<int> l3(num,num + 3);       //因为num+3的位置,索引为3,但是迭代区间左闭右开,所以不包括索引3位置,内容为1 2 3C++提供了如下:
| 函数声明 | 接口说明 | 
|---|---|
| begin() + end() | 返回第一个元素的迭代器+返回最后一个元素下一个位置的迭代器 | 
| rbegin() + rend() | 返回第一个元素的reverse_iterator,即end位置 + 返回最后一个元素下一个位置的reverse_iterator,即begin位置 | 
int num[5] = {1,2,3,4,5};
list<int> li(num,num+5);    //创建内容为1 2 3 4 5的链表
list<int>::iterator it = li.begin();
while(it = li.end())
{
    cout<<*it<<" ";
    it++;
}
//输出结果为: 1 2 3 4 5int num[5] = {1,2,3,4,5};
list<int> li(num,num+5);    //创建内容为1 2 3 4 5的链表
list<int>::iterator it = li.rbegin();
while(it = li.rend())
{
    cout<<*it<<" ";
    it++;
}
//输出结果为: 5 4 3 2 1主要有两个,如下:
| 函数声明 | 接口说明 | 
|---|---|
| empty() | 检测list是否为空,是返回true,否则返回false | 
| size() | 返回list中有效节点的个数 | 
int num[5] = {1,2,3,4,5};
list<int> li(num,num+5);    //创建内容为1 2 3 4 5的链表
list<int> li1;
if(li.empty())   
{
    cout<<"list没有数据"<<endl;
}
else 
{
    cout<<"list有"<<li.size()<<"个元素"<<endl;
}
if(li1.empty())   
{
    cout<<"list1没有数据"<<endl;
}
else 
{
    cout<<"list1有"<<li1.size()<<"个元素"<<endl;
}
/* 输出结果为:  
list有5个元素
list1没有数据
*/这里c++提供了两个接口,分别用于首尾访问front() 和 back();
int num[5] = {1,2,3,4,5};
list<int> li(num,num+5);    //创建内容为1 2 3 4 5的链表
cout << "front获取的元素为:"<<li.front()<<endl;
cout << "back获取的元素为:"<<li.back()<<endl;
/* 结果为:
front获取的元素为: 1
back获取的元素为:  5
*/这里主要提供了如下接口:
| 函数声明 | 接口说明 | 
|---|---|
| push_front() | 在list首元素前插入值为val的元素 | 
| pop_front() | 删除list中第一个元素 | 
| push_back() | 在list尾部插入值为val的元素 | 
| pop_back() | 删除list中最后一个元素 | 
| insert(iterator pos,const value_type& val) | 在list position 位置中插入值为val的元素 | 
| erase(iterator pos) | 删除list position位置的元素 | 
| swap() | 交换两个list中的元素 | 
list<int> li(2,3); li.push_front(9); //现在list的内容为:9 2 3
list<char> li(3,'s'); li.pop_front(); //现在list的内容为:s s
list<char> li(3,'s');
li.push_back('a');
//现在list的内容为:s s s alist<int> li(4,2); li.pop_back(); //现在的list内容为: 2 2 2
这里博主先介绍一个全局函数find(),它是一个函数模板
template <class InputIterator, class T> InputIterator find (InputIterator first, InputIterator last, const T& val);
即我们需要传三个参数,前两个是迭代器区间,后是待查找值,其中迭代器区间是左闭右开.
list<int> li; li.push_bakc(1); li.push_bakc(2); li.push_bakc(3); list<int>::iterator it = li.begin(); it = find(it,it+3,2) //找到元素2的位置 li.insert(it,66); //现在的list内容为: 1 66 2 3
list<int> li; li.push_bakc(1); li.push_bakc(2); li.push_bakc(3); list<int>::iterator it = li.begin(); it = find(it,it+3,2) //找到元素2的位置 li.erase(it); //现在的list内容为: 1 3
int num1[4] = {1,2,3,4};
int num2[5] = {5,4,3,2,1};
list<int> li1(num1,num1 + 4);
list<int> li2(num2,num2 + 5);
li1.swap(li2); //交换链表
//现在li1为: 5 4 3 2 1
//现在li2为: 1 2 3 4到此,相信大家对“怎么使用C++中的list”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。