目錄一、爬取目標二、爬取結果三、代碼講解四、技術總結五、演示視頻六、附完整源碼 一、爬取目標 您好!我是@馬哥python說,一名10年程式猿。 今天分享一期爬蟲案例,爬取的目標是:今日頭條熱榜的榜單數據。 打開今日頭條 首頁,在頁面右側會看到頭條熱榜,如下: 爬取以上6個關鍵欄位,含: 熱榜排名, ...
假如我有一個需求,就是如果傳入的參數是int類型,我就輸出int類型,否則就輸出T。很顯然,根據模板的基礎知識,我們可以這麼寫
template <class T>
void f(T) {
std::cout << "T\n";
}
template <>
void f(int) {
std::cout << "int\n";
}
除了這樣寫,還有別的寫法嗎。我們可以思考一下.................這裡我們其實可以用std::enable_if_t來實現,它相當於給std::enable_if的type類型起了一個別名,我們先看怎麼寫。
template <class T>
std::enable_if_t<std::is_same_v<int, T>> g(T) {
std::cout << "int\n";
}
template <class T>
std::enable_if_t<!std::is_same_v<int, T>> g(T) {
std::cout << "T\n";
}
假設我現在再提一個需求,就是只能實現一個函數,且只能接受int類型的參數,其它類型均不能通過編譯。這時候如果你僅僅單純地void f(int),那麼即便你傳入double類型進來,它也會發生類型轉換並執行這個函數,這並不是我們想要的。因此,我們可以考慮用std::enable_if_t來實現。
template <class T>
std::enable_if_t<std::is_same_v<int, T>> h(T) {
std::cout << "strictly int\n";
}
好的,事情到這裡結束。