我对C++面向对象部分的内容一直没有很好的理解,今天正好遇到了相关的问题,就学习一下,补补坑。
简单题
的时候遇到了不明所以的编译错误。
解题方案试图在Solution类中使用自己定义的比较函数调用std::sort对vector
>进行排序。
1
|
class Solution {
|
2
|
protected:
|
3
|
bool cmp(const vector<int>&a,const vector<int>&b) const{
|
4
|
return a[0]<b[0];
|
5
|
}
|
6
|
public:
|
7
|
void merge(vector<vector<int>>& a) {
|
8
|
sort(a.begin(),a.end(),cmp);
|
9
|
|
10
|
}
|
11
|
};
|
cppreference
吧
这里主要填一下第三种方法的坑,即static的用法。
C/C++的static修饰词可以用在以下地方:
全局变量(面向过程)
局部变量(面向过程)
函数(面向过程)
类内成员(面向对象)
类内成员函数(面向对象)
1
|
class TEST{
|
2
|
protected:
|
3
|
int magic_number;
|
4
|
public:
|
5
|
void test(){
|
6
|
cout<<magic_number<<endl;
|
7
|
}
|
8
|
};
|
1
|
class Solution {
|
2
|
public:
|
3
|
vector<vector<int>> merge(vector<vector<int>>& a) {
|
4
|
if (a.size()==0) return {};
|
5
|
sort(a.begin(),a.end(),[](vector<int>&a,vector<int>&b){
|
6
|
return a[0]<b[0];
|
7
|
});
|
8
|
vector<int> cur={a[0]};
|
9
|
vector<vector<int>> ret;
|
10
|
for (auto &it:a){
|
11
|
if (it[0]<=cur[1]){
|
12
|
cur[1]=max(cur[1],it[1]);
|
13
|
}
|
14
|
else{
|
15
|
ret.push_back(cur);
|
16
|
cur=it;
|
17
|
}
|
18
|
}
|
19
|
ret.push_back(cur);
|
20
|
return ret;
|
21
|
}
|
22
|
};
|
部分内容参考