stl中list的sort问题
先提一个小概念:
oop:数据和方法在一起
gp:数据和方法分开
先看如下一般情况下代码:
#include<iostream>
#include<vector>
#include <array>
#include <list>
#include<forward_list>
#include <ctime>
#include <map>
#include <string>
#include<algorithm>
using namespace std;
struct Mystru
{
string name;
int age;
};
void main()
{
list<Mystru> m_list;
Mystru s;
s.name = "ty1";
s.age = 1;
Mystru s1;
s1.name = "ty2";
s1.age = 2;
Mystru s2;
s2.name = "ty3";
s2.age = 3;
Mystru s3;
s3.name = "ty4";
s3.age = 4;
m_list.push_back(s);
m_list.push_back(s1);
m_list.push_back(s2);
m_list.push_back(s3);
m_list.sort([](Mystru m1, Mystru m2){return m1.age > m2.age; });
for (auto p :m_list)
{
cout << p.name << " " << p.age << endl;
}
system("pause");
}
结果:
上面代码是使用了list自带的srot,接下来我们看看algorithm中的算法sort
查了有关资料得到答案:
algorithm中算法sort直接接随机迭代器,而list中的迭代器不满足。这是简单的理解。更进一步是:list的存储不是连续的它不支持+3,或者-2