【发布时间】:2021-05-28 01:12:37
【问题描述】:
我正在做一个需要对类对象进行排序的编程问题。
所以,我使用sort() 对对象数组进行排序,但我做不到,我在某处读到它需要 lambda 表达式,但我还不知道它们。
所以,如果你能通过对 lambda 表达式的一些解释来帮助我解决这个问题,那就太好了。
#include<bits/stdc++.h>
using namespace std;
class CallLog{
public:
string pno;
int dur;
string da;
void setpno(string p_no) {pno = p_no;}
void setdur(int d) {dur = d;}
void setda(string dsa) {da = dsa;}
string getpno() {return pno;}
int getdur() {return dur;}
string getda() {return da;}
};
int main() {
int n;
cin >> n;
CallLog arr[n];
for(int i = 0; i < n; i++) {
string pno;
int dur;
string da;
cin >> pno >> dur >> da;
arr[i].setpno(pno);
arr[i].setdur(dur);
arr[i].setda(da);
}
sort(arr, arr+n, "what labmda expression to write?" );
for(int i = 0; i < n; i++) {
cout << "DialledNumber : " << arr[i].getpno() << ", Duration : " << arr[i].getdur() << ", Date : " << arr[i].getda() << "\n";
}
}
我想根据int dur 对这些对象进行排序。
【问题讨论】:
-
专业提示: C++ 不支持可变长度数组 (VLA)。因此,
cin >> n; CallLog arr[n];之类的语句是无效的。相反,使用std::vector或动态内存分配与new和delete对。 -
感谢@RohanBari 的提示
标签: c++ class sorting object lambda