front用来返回动态数组中第一个元素的引用,back用来返回最后一个元素的引用
begin用来返回第一个元素的地址,end返回最后一个元素的下一个位置的地址
用法示例
vector<int> nums;
nums.push_back(1);
nums.push_back(2);
cout << nums.front() << endl;//输出1
cout << nums.end() << endl;//输出2
auto it = nums.begin();
while(it != nums.end())
{
...
}
auto it1 = nums.end() - 1;
while(it1 != nums.begin())
{
...
}
sort函数我们并不陌生,但是今天看力扣的官方题解我发现它也可以对动态数组的动态数组进行排序
举个例子
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<vector<int>> nums;
nums.push_back({1,4});
nums.push_back({5,1});
nums.push_back({4,2});
sort(nums.begin(),nums.end());
for(auto it :nums)
{
cout << it[0] << " " << it[1] << endl;
//输出结果
1 4
4 2
5 1
}
return 0;
}
提供一道例题
力扣:合并区间
https://leetcode.cn/problems/merge-intervals/description/?envType=study-plan-v2&envId=top-interview-150
思路:
这道题思路是拍好左区间的数后对下一个区间的左端点和当前区间的右端点进行比较,如果下一个区间左端点比当前区间右端点小,那么可以合并
代码(官方题解):
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if(intervals.size() == 0)
{
return {};
}
sort(intervals.begin(),intervals.end());
vector<vector<int>> merged;
for(int i = 0; i < intervals.size(); i ++)
{
int L = intervals[i][0],R = intervals[i][1];
if(!merged.size()||merged.back()[1] < L)
{
merged.push_back({L,R});
}
else
{
merged.back()[1] = max(merged.back()[1],R);
}
}
return merged;
}
};