網(wǎng)站套站什么意思廣州最新疫情最新消息
56. 合并區(qū)間
class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {//先按照每個(gè)區(qū)間的左元素排序,這樣每個(gè)區(qū)間的左邊界就固定了,所以之后考慮相鄰的//區(qū)間是否是相交的就行 類似與棧的操作//先放進(jìn)棧一個(gè)區(qū)間,第一個(gè)區(qū)間的左邊界一定是整個(gè)大區(qū)間的最左邊界//這個(gè)點(diǎn)是固定的 不用考慮 然后考慮每?jī)蓚€(gè)相鄰的區(qū)間 //如果第一個(gè)區(qū)間的右邊界大于第二個(gè)區(qū)間的左邊界,就說(shuō)明這兩個(gè)區(qū)間是相交的//要合并區(qū)間 左邊界取第一個(gè)區(qū)間的左邊界 右邊界取兩個(gè)區(qū)間右邊界的最大值//放入ans數(shù)組 除第一次ans為空的情況直接插入第一個(gè)區(qū)間 //之后每次比較的兩個(gè)區(qū)間就是ans.back()和intervals數(shù)組中最左邊沒(méi)有考慮的區(qū)間sort(intervals.begin(),intervals.end());vector<vector<int>> ans;for(auto &it:intervals){if(!ans.empty()&&it[0]<=ans.back()[1]){int l = ans.back()[0];int r = max(it[1],ans.back()[1]);ans.pop_back();ans.push_back({l,r});}else{ans.push_back({it[0],it[1]});}}return ans;}
};
C和C++的區(qū)別
頭文件
●?C語(yǔ)言的頭文件結(jié)尾有.h
●?C++的頭文件沒(méi)有.h
●?C++中使用C的頭文件可以把.h去掉 在前面補(bǔ)一個(gè)c 比如math.h和cmath
前綴c和后綴.h
????????使用c開(kāi)頭的頭文件是為了標(biāo)明這是C++版本的C語(yǔ)言標(biāo)準(zhǔn)庫(kù),這些庫(kù)函數(shù)和宏定義都是在std命名空間里的,提供了更好的兼容性和類型安全性。而.h的頭文件依然可以在C++中直接使用,并且這些函數(shù)和宏定義是直接可以在全局作用域中使用的,不屬于任何的命名空間
C語(yǔ)言是過(guò)程式編程語(yǔ)言,C++是面向?qū)ο蟮木幊陶Z(yǔ)言,兼顧過(guò)程式編程
C++相對(duì)C語(yǔ)言增強(qiáng)了類型檢查,結(jié)構(gòu)體允許定義函數(shù)了(類似于class,訪問(wèn)權(quán)限默認(rèn)是public)支持了類、對(duì)象、繼承、多態(tài)、封裝、抽象、構(gòu)造函數(shù)、析構(gòu)函數(shù)、new、delete、引用、模版、STL容器、算法庫(kù)、迭代器、命名空間、默認(rèn)函數(shù)參數(shù)、函數(shù)重載、運(yùn)算符重載、異常處理、多線程支持。
布爾、整型、浮點(diǎn)、指針類型和0做比較
bool:
- 與
0
比較時(shí),布爾值會(huì)保持自身語(yǔ)義,不會(huì)出現(xiàn)精度或隱式轉(zhuǎn)換問(wèn)題。 - 直接使用布爾變量進(jìn)行條件判斷更自然(如
if (b1)
或if (!b2)
)。
整型
- 整型與
0
比較是非常常見(jiàn)的用法,沒(méi)有浮點(diǎn)型或指針類型的潛在問(wèn)題。 - 對(duì)于非零值的判斷,可以直接寫(xiě)為
if (a)
,而無(wú)需顯式比較a != 0
。
浮點(diǎn)類型(float
, double
)
- 浮點(diǎn)類型可以直接與
0
比較,但由于 浮點(diǎn)精度誤差 的存在,直接比較結(jié)果可能會(huì)不準(zhǔn)確。 - 通常不推薦直接與
0
使用==
或!=
進(jìn)行比較,而是使用一個(gè)小的容差值(epsilon
)來(lái)進(jìn)行近似比較。
指針類型與 0
比較
- 在 C++ 中,
0
是空指針常量,可用來(lái)表示一個(gè)空指針(nullptr
在 C++11 中引入,之前常用0
表示空指針)。 - 指針與
0
比較用于判斷指針是否為空指針。
nullptr_t類型
- 唯一的值:
std::nullptr_t
類型的唯一值是nullptr(右值)
。 - 隱式轉(zhuǎn)換:
std::nullptr_t
類型的對(duì)象可以隱式轉(zhuǎn)換為任意指針類型(如int*
、char*
、void*
等),但不能轉(zhuǎn)換為非指針類型(如int
或float
)。 - 語(yǔ)義明確:它明確表示 "空指針" 的含義,而不是整數(shù)
0
或其他類型。
malloc、calloc、realloc的區(qū)別
#include <stdlib.h>
#include <stdio.h>int main() {// malloc 示例int* malloc_arr = (int*)malloc(5 * sizeof(int)); // 分配未初始化內(nèi)存if (malloc_arr) {for (int i = 0; i < 5; i++) malloc_arr[i] = i;free(malloc_arr);}// calloc 示例int* calloc_arr = (int*)calloc(5, sizeof(int)); // 分配并初始化為 0if (calloc_arr) {for (int i = 0; i < 5; i++) printf("%d ", calloc_arr[i]);free(calloc_arr);}// realloc 示例int* realloc_arr = (int*)malloc(3 * sizeof(int));if (realloc_arr) {realloc_arr = (int*)realloc(realloc_arr, 6 * sizeof(int)); // 調(diào)整大小free(realloc_arr);}return 0;
}