c++list容器

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <list>

 

using namespace std;

 

class Person

{

public:

Person(int age) :age(age) {}

int age;

};

 

bool myCompare1(int &a, int &b)

{

return a > b;

}

 

bool myCompare2(Person &p1, Person &p2)

{

return p1.age > p2.age;

}

 

//list意义为链表

int main()

{

//初始化

list<int> l1;

list<int> l2(10, 5);//10个元素,每个元素为5

list<int> l3(l2);//拷贝构造

list<int> l4(l2.begin(), l2.end());//区间赋值

 

//遍历

list<int>::iterator it = l4.begin();

while (it != l4.end())

{

cout << *it << " ";

it++;

}

cout << endl;

 

//list插入删除

list<int> l5;

l5.push_back(10);

l5.push_front(20);

l5.push_front(30);

l5.push_front(40);

l5.push_front(50);

l5.insert(l5.begin(), 30);

//l5.insert(15.begin() + 2, 40);//这是错误的,因为这是链表,不是数组,内存区间是不连续的

//正确的写法

list<int>::iterator it2 = l5.begin();//迭代器只可以加加的

it2++;

it2++;

l5.insert(it2, 50);

 

//删除

l5.pop_back();

l5.pop_front();

l5.remove(50);//删除所有匹配值,list独有的

l5.erase(l5.begin(), l5.end());

l5.clear();

//赋值操作

l5.assign(10, 5);//赋值10个元素,每个元素为5

l5.push_front(10);

l5.reverse();//链表反序

it2 = l5.begin();

while (it2 != l5.end())

{

cout << *it2 << " ";

it2++;

}

cout << endl;

 

//list容器本身就带有一个sort()函数,进行排序

//为什么list本身也提供一个sort()函数

//因为算法中的sort只排序支持可随机访问的容器,list为不可随机访问容器

//支持可随机访问的容器,运用算法,才可以高效的进行逻辑运算,不支持随机访问的容器,运用算法效率就太低下了,因此算法sort就直接不支持不可以随机访问的容器排序

l5.sort();//默认是从小到大

l5.sort(myCompare1);//自己指定方法,从大到小排序

//如果list容器中是对象,需要我们自己制定排序方法

 

 

list<Person> l6;

Person p1(6);

Person p2(3);

Person p3(9);

 

l6.push_back(p1);

l6.push_back(p2);

l6.push_back(p3);

 

l6.sort(myCompare2);

return 0;

}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值