//
// TemplateArray.cpp
// C++
//
// Created by FatJoe on 03/12/2018.
// Copyright © 2018 FatJoe . All rights reserved.
//
#include <stdio.h>
#include <iostream>
/*
This code demonstrates representing an array and array adder using objects
Overloading the [] operator
*/
#include<list>
#include <map>
using namespace std;
class person{
public:
int i;
person(int j):i(j){}
};
class comparer{
public:
bool operator()(const person& first, const person& second)const{
cout << "operator() called" << endl;
return true;
};
};
int main(){
list<person> personlist;
list<person>::iterator itr = personlist.begin();
personlist.insert(itr,person(1));
personlist.insert(itr,person(2));
personlist.insert(itr,person(3));
for(itr=personlist.begin(); itr!=personlist.end(); itr++){
cout << (*itr).i << "Person no." << endl;
};
personlist.sort(comparer());
for(itr=personlist.begin(); itr!=personlist.end(); itr++){
cout << (*itr).i << "Person no." << endl;
};
personlist.sort(comparer());
for(itr=personlist.begin(); itr!=personlist.end(); itr++){
cout << (*itr).i << "Person no." << endl;
};
return 0;
}我正在尝试编写我自己的排序标准,我正在测试我自己的一些代码。
在我的比较器函数器中,我返回true,这意味着第一个参数将与第二个参数交换。
然而,我很难理解为什么如果列表中有3个元素,为什么比较函数被调用了3次,它肯定是compare(1,2)然后compare(2,3)?
发布于 2018-12-07 16:08:04
https://stackoverflow.com/questions/53665476
复制相似问题