【C++】入門階段

一、初始化

C++中的初始化指為變量賦予初始值的過程。初始化方式多樣,適用于不同場景。

char cha=0;
char chb={'0'};
char chc=('\0);
char chd=cha;
char che{};

注意事項

  • 優先使用列表初始化({}),避免窄化轉換風險。
  • 在c++11中{ }在變量,指針,數組,結構體上達到統一。
  • { }對數據進行嚴格的數據類型檢查,而在c語言中檢查不嚴格。
  • 類成員初始化推薦使用成員初始化列表,效率高于構造函數內賦值。
  • 動態內存需手動管理,避免內存泄漏。

二、輸入輸出

c語言的輸入輸出

C語言中標準輸入輸出主要通過stdio.h頭文件提供的函數實現:

格式化輸入輸出

  • printf():格式化輸出到標準輸出(屏幕)
  • scanf():從標準輸入(鍵盤)讀取格式化輸入
#include <stdio.h>
int main() {int num;printf("Enter an integer: ");scanf("%d", &num);printf("You entered: %d", num);return 0;
}

注意事項

  • 使用scanf()時注意變量前的&符號(數組名除外)
  • 輸出浮點數時可使用%.2f等格式控制小數位數
  • 輸入輸出對數據類型太依賴,初始化的數據類型,輸出也是該類型

c++的輸入輸出

C++ 的輸入輸出主要通過標準庫 <iostream> 提供,包含 cin(標準輸入)和 cout(標準輸出)等對象。

頭文件引入

#include <iostream>
using namespace std; // 避免每次寫 std::

標準輸出(cout):cout 用于向控制臺輸出數據,使用 << 運算符連接內容。

int num = 42;
cout << "Hello, World!" << endl; // endl 換行
cout << "Number: " << num << "\n"; // "\n" 也可換行

格式化輸出:通過 <iomanip> 實現格式控制(如小數位數、對齊):

#include <iomanip>
double pi = 3.1415926;
cout << fixed << setprecision(2) << pi; // 輸出 3.14

?

標準輸入(cin):cin 用于從控制臺讀取數據,使用 >> 運算符分隔輸入。

int age;
string name;
cout << "Enter name and age: ";
cin >> name >> age; // 輸入 "Alice 25"

處理字符串輸入:cin 以空格為分隔符,讀取整行需用 getline

string fullName;
cin.ignore(); // 清除緩沖區殘留的換行符
getline(cin, fullName); // 讀取整行

?

總結

  • 輸入輸出只針對于基本的數據類型,不包含自定義的類型
  • endl相當于'\n'

三、const關鍵字

const關鍵字在C和C++中的區別

總結

const在修飾的整型類型常量時,在讀取其值的時候,都會在編譯的時候將其常量值替換掉;相當于c語言的 #define IP 3.14

而在c語言中,int b=a;從a這個存儲單元取數據放入寄存器中,再將寄存器的值給b這個變量,因此每次都從內存中取而不是替換。作用于編譯的時候做出檢查。a是常量不允許修改,但在運行時a并不是常量值,而是從內存空間中取,這導致在c語言中不能用a定義數組,a仍然是一個變量。

作用域差異
在C語言中,const修飾的變量默認是外部鏈接(external linkage),除非顯式使用static限定。在C++中,const修飾的變量默認是內部鏈接(internal linkage),類似于static的效果。若需在C++中實現外部鏈接,需顯式添加extern關鍵字。

初始化要求
C++要求const變量必須在聲明時初始化,否則會編譯錯誤。C語言允許const變量稍后初始化,但未初始化的const變量可能導致未定義行為。

數組大小聲明
C++允許使用const變量聲明數組大小,且該變量被視為編譯時常量表達式。C語言中,即使使用const變量,數組大小仍需通過宏或字面量定義,const變量在C中不被視為常量表達式。

// C++合法,C不合法
const int size = 10;
int arr[size]; 

指針與常量的關系
C和C++均支持指向常量的指針和常量指針,但類型檢查嚴格性不同。C++禁止將非const指針賦給const指針(隱式轉換),而C允許(可能引發警告)。

// C++報錯,C允許(帶警告)
int* p;
const int* cp = p; 

與宏的替代關系
C++中const可完全替代宏定義常量,支持類型檢查和作用域規則。C語言中const無法完全替代宏,例如在case語句或位域長度中仍需使用宏。

C++中的擴展用法
C++允許const用于類成員函數(const成員函數),表明該函數不修改對象狀態。C語言無此功能,因其不支持面向對象。

class Example {
public:void foo() const; // 合法C++,不修改成員變量
};

類型安全
C++中const是類型系統的一部分,參與函數重載和模板推導。C語言中const更多是編譯期提示,缺乏嚴格的類型檢查。

const和指針的區別

在C++中,const和指針的關系涉及指針的指向和指向內容的可變性,主要通過const的位置區分。以下是具體區別:

const修飾指針指向的內容

聲明方式為const T*T const*(兩者等價),表示指針指向的內容不可修改,但指針本身可以重新指向其他地址。

int a = 10, b = 20;
const int* ptr = &a;
// *ptr = 30;  // 錯誤:內容不可修改
ptr = &b;     // 正確:指針可以指向其他地址

const修飾指針本身

聲明方式為T* const,表示指針本身不可修改(必須初始化),但指向的內容可以修改。

int a = 10, b = 20;
int* const ptr = &a;
*ptr = 30;    // 正確:內容可修改
// ptr = &b;  // 錯誤:指針不可重新指向

雙const修飾

聲明方式為const T* const,表示指針本身和指向的內容均不可修改。

int a = 10, b = 20;
const int* const ptr = &a;
// *ptr = 30;  // 錯誤:內容不可修改
// ptr = &b;   // 錯誤:指針不可重新指向

區別總結

  1. const T*:內容只讀,指針可變。
  2. T* const:指針只讀,內容可變。
  3. const T* const:指針和內容均為只讀。

舉例

//哪些正確,哪些錯誤?
int a = 10, b = 20;
const int* p = &a;       // p是指向常量的指針,不能通過p修改a的值
int* s1 = p;             // 錯誤:無法將const int*隱式轉換為int*
const int* s2 = p;       // 正確:s2與p類型相同,均為指向常量的指針
int* const s3 = p;       // 錯誤:s3是常量指針,但類型不匹配(無法舍棄const)
const int* const s4 = p; // 正確:s4是指向常量的常量指針,與p類型兼容
int a = 10, b = 20;
int* const p = &a;
int* s1 = p;
const int* s2 = p;
int* const s3 = p;
const int* const s4 = p;//可以編譯通過

四、*和?&

*

int c = a * b;//乘法運算符
double* p = &a;//指針的修飾符
*p = 100.100;//解引用

&

a& b;//位與運算符
int* p = &c;//取地址
int& x = a;//引用,別名

注意事項:

當&在引用時,沒有空引用;必須初始化;沒有引用的引用;?

左值引用:可以取地址的標識符是左值引用,&

右值引用:不能取地址的引用。內置類型所產生的右值都有常性,即只可讀不可取,&&

const引用?

const int &;

  • 常引用或者萬能引用
  • 既可引用左值引用,又可引用右值引用
  • 只可以去獲取值,但不可以修改值

int const &;

引用作為形參代替指針

使用指針交換兩個整形值。c語言實現:

void my_swap(int* a, int* b) {assert(a != NULL && b != NULL);int tmp = *a;*a = *b;*b = tmp;
}
int main() {int a = 10, b = 20;cout << "a = " << a << "b = " << b << endl;my_swap(&a, &b);cout << "a = " << a << "b = " << b << endl;return 0;
}

使用引用交換兩個整形值。c++實現

不存在NULL引用,不需要判空,比指針安全。

void my_swap2(int &x, int &y) {int tmp = x;x = y;y = tmp;
}
int main() {int a = 10, b = 20;cout << "a = " << a << "b = " << b << endl;my_swap(&a, &b);cout << "a = " << a << "b = " << b << endl;return 0;
}

?引用的其它格式

失效指針:失效指針(Dangling Pointer)是指向已釋放或無效內存地址的指針。當指針指向的內存被釋放后,指針本身未置空,仍保留原地址,此時訪問該指針會導致未定義行為(如程序崩潰、數據錯誤等)。

失效指針的常見場景

  1. 動態內存釋放后未置空
    使用 freedelete 釋放內存后,指針未設置為 NULL,導致后續訪問失效內存。

    int *ptr = (int *)malloc(sizeof(int));
    free(ptr);  // ptr 成為失效指針
    *ptr = 10;  // 危險操作!
    
  2. 局部變量作用域結束
    指針指向函數內的局部變量,函數返回后局部變量被銷毀,指針變為失效。

    int *getLocalPointer() {int x = 5;return &x;  // 返回局部變量的地址
    }
    int *ptr = getLocalPointer();  // ptr 指向已釋放的棧內存
    
  3. 對象生命周期結束
    C++ 中對象被銷毀后,指向其成員或自身的指針變為失效。

    class MyClass {
    public:int val;
    };
    MyClass *obj = new MyClass();
    delete obj;     // obj 成為失效指針
    obj->val = 42;  // 未定義行為
    

避免失效指針的方法

  1. 釋放后置空
    釋放內存后立即將指針設為 NULLnullptr,后續可通過判空避免誤用。

    free(ptr);
    ptr = NULL;  // 安全措施
    
  2. 使用智能指針(C++)
    std::shared_ptrstd::unique_ptr 自動管理內存生命周期,避免手動釋放導致的失效問題。

    std::shared_ptr<int> ptr = std::make_shared<int>(42);
    // 無需手動釋放,超出作用域后自動銷毀
    
  3. 避免返回局部變量地址
    若需返回指針,應使用動態分配內存或靜態變量。

    int *getSafePointer() {int *x = (int *)malloc(sizeof(int));*x = 5;return x;  // 返回堆內存地址
    }
    
  4. 靜態分析工具
    使用 Valgrind、AddressSanitizer 等工具檢測代碼中的失效指針問題。

指針和解引用的區別

語法規則:

  • 從語法規則上講,指針變量存儲某個實例(變量或對象)的地址;引用是某個實例的別名
  • 程序為指針變量分配內存區域;而不為引用分配內存區域。
  • 解引用是指針使用時要在前加“*”;引用可以直接使用。
  • 指針變量的值可以發生改變,存儲不同實例的地址;引用在定義時就被初始化,之后無法改變(不能是其他實例的引用)。
  • 指針變量的值可以為空(NULL,nulptr);沒有空引用。
  • 指針變量作為形參時需要測試它的合法性(判空NULL);
  • 引用不需要判空對指針變量使用“sizeof"得到的是指針變量的大小。對引用變量使用"sizeof"得到的是變量的大小。
  • 理論上指針的級數沒有限制;但引用只有一級。即不存在引用的引用,但可以有指針的指針。
  • ++引用與++指針的效果不一樣。例如就++操作而言會使指針變量指向下一個實體(變量或對象)的地址;而不是改變所指實體(變量對指針變量的操作,今或對象)的內容。
  • 對引用的操作直接反應到所引用的實體(變量或對象)
  • 不可以對函數中的局部變量或對象以引用或指針方式返回。

引用作為函數的返回值類型

不能對函數中的局部變量或對象以引用或指針的方式返回。

語法糖:

語法糖(Syntactic Sugar)指簡化代碼表達的語言特性,使代碼更簡潔易讀。

五、缺省參數?

  • 缺省參數指在定義函數時為形參指定缺省值(默認值)。
  • 這樣的函數在調用時,對于缺省參數,可以給出實參值,也可以不給出參數值。如果給出實參,將實參傳遞給形參進行調用,如果不給出實參,則按缺省值進行調用。
  • 缺省參數的函數調用:缺省實參并不一定是常量表達式,可以是任意表達式,甚至可以通過函數調用給出。如果缺省實參是任意表達式,則函數每次被調用時該表達式被重新求值。但表達式必須有意義;
  • 缺省參數可以有多個,但所有缺省參數必須放在參數表的右側,即先定義所有的非缺省參數,再定義缺省參數。這是因為在函數調用時,參數自左向右逐個匹配,當實參和形參個數不一致時只有這樣才不會產生二義性。
  • 習慣上,缺省參數在公共頭文件包含的函數聲明中指定,不要函數的定義中指定。
    如果在函數的定義中指定缺省參數值,在公共頭文件包含的函數聲明中不能再次指定缺省參數值。缺省實參不一定必須是常量表達式可以使用任意表達式。
  • 當缺省實參是一個表達式時在函數被調用時該表達式被求值。
  • C語言不支持

1、缺省參數的語法規則

  • 缺省參數在函數聲明中指定,格式為 類型 參數名 = 默認值
  • 若函數有多個參數,缺省參數必須從右向左連續定義。非缺省參數不能出現在缺省參數右側。
void func(int a, int b = 10, int c = 20); // 正確  
void func(int a = 5, int b, int c);       // 錯誤:非缺省參數b在缺省參數a右側  

2、缺省參數的使用示例

#include <iostream>
using namespace std;// 函數聲明時指定缺省參數
void printMessage(const string& msg = "Hello, World!") {cout << msg << endl;
}int main() {printMessage();       // 輸出: Hello, World!printMessage("Hi!");  // 輸出: Hi!return 0;
}

3、缺省參數的注意事項

  1. 聲明與定義分離時:缺省參數僅在函數聲明中指定,定義時不能重復指定。

    // 聲明(含缺省參數)
    void logError(const string& file, int line = -1);// 定義(不能重復缺省值)
    void logError(const string& file, int line) { /* ... */ }
    
  2. 作用域規則:同一作用域內,缺省參數只能指定一次。多次聲明同一函數時,后續聲明可為之前未指定缺省的參數添加默認值,但不能修改已存在的缺省值。

    void foo(int x, int y = 10);  // 首次聲明  
    void foo(int x = 5, int y);   // 合法:補充x的缺省值  
    void foo(int x = 8, int y);   // 錯誤:試圖修改x的缺省值  
    
  3. 避免二義性:缺省參數可能導致函數重載沖突。

    void bar(int a);  
    void bar(int a, int b = 0);  
    bar(10);  // 錯誤:調用歧義  
    
  4. 與函數指針兼容性:函數指針類型必須嚴格匹配參數列表,包含缺省參數信息。

缺省參數的典型應用場景

  • 簡化接口:為常用參數提供默認值,減少冗余調用代碼。
  • 擴展函數功能:通過逐步添加缺省參數擴展函數,避免破壞現有代碼。

六、函數重載

?

? ? ?函數重載的概念

函數重載(Function Overloading)是指在同一個作用域內,允許定義多個同名函數,但這些函數的參數列表(參數類型、數量或順序)必須不同。編譯器根據調用時提供的實參類型和數量,自動匹配最合適的函數版本。

函數重載的核心規則

  • 如果兩個函數的參數表相同,但返回類型不同,會被標記為編譯錯誤:函數重復聲明

  • 參數表的比較過程與形參名無關

  • 如果在兩個函數的參數列表中,只有缺省實參不同,則第二個聲明被視為第一個的重復聲明

  • typedef名為現有的數據類型提供了一個替換名,它并沒有創建一個新類型,因此,如果兩個函數參數表的區別只在于一個使用了typedef,而另一個使用了與typedef相應的類型。則該參數表被視為相同的參數列表。

  • 當一個形參類型有const或volatile修飾時,如果形參是按值傳遞方式定義,在識別函數聲明是否相同時,并不考慮const和volatile修飾符.

  • 當一個形參類型有const或volatile修飾時,如果形參定義指針或引用時,在識別函數聲明是否相同時,就要考慮const和volatile修飾符.

  • 注意函數調用的二義性;如果在兩個函數的參數表中,形參類型相同,而形參個數不同,形參默認值將會影響函數的重載.

函數重載解析的步驟

  • 確定函數調用考慮的重載函數的集合,確定函數調用中實參表的屬性.
  • 從重載函數集合中選擇函數,該函數可以在(給出實參個數和類型)的情況下可以調用函數.
  • 選擇與調用最匹配的函數.

函數重載的注意事項

  • 默認參數與重載的沖突:默認參數可能導致函數調用歧義。
    void func(int a, int b = 0);  
    void func(int a);  
    func(10); // 編譯錯誤:無法確定調用哪個版本  
    
  • 類型轉換的影響:隱式類型轉換可能干擾重載匹配。
    void print(int x);  
    void print(double x);  
    print(3.14f); // 可能匹配double版本而非預期float  
    

函數重載的應用場景

  • 處理不同類型數據:如數學運算支持intfloat等。
  • 簡化接口設計:同名函數提供不同參數組合的調用方式。
  • 構造函數重載:類通過不同參數列表實現多種初始化方式。

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89539.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89539.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tailscale在ubuntu22.04上使用

支持 x86 和 ARM 架構 CPU 的軟件包已提供 32 位和 64 位版本。 添加 Tailscale 的軟件包簽名密鑰及倉庫&#xff1a; curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null c…

深入解析Linux文件重定向原理與dup2系統調用

在Linux中&#xff0c;重定向&#xff08;Redirection&#xff09;是一種強大的功能&#xff0c;允許用戶控制命令的輸入來源&#xff08;stdin&#xff09;和輸出目標&#xff08;stdout和stderr&#xff09;。通過重定向&#xff0c;你可以將命令的輸出保存到文件、從文件讀取…

QGIS制作的儀表盤工程

在QGIS的官方資源庫下載了一個QGIS制作的儀表盤工程&#xff0c;感覺非常炫酷&#xff01;分享給大家&#xff01;下面的儀表盤會將選中的道路數及長度&#xff0c;動態顯示在相應的儀表項中&#xff01;下面的儀表盤會將選中的道路數及長度&#xff0c;動態顯示在相應的儀表項…

Python高級數據類型:集合(Set)

集合是Python中一種非常有用的數據結構&#xff0c;它與列表類似但具有獨特的特性。本文將全面介紹集合的所有知識點&#xff0c;從基礎概念到高級用法&#xff0c;幫助初學者徹底掌握集合的使用。1. 集合簡介1.1 什么是集合&#xff1f;集合&#xff08;Set&#xff09;是Pyth…

【Unity編輯器開發GUI.Window】

Unity GUI.Window 筆記 根據官方文檔2021版本的&#xff0c;點擊鏈接跳轉記錄 概述 GUI.Window 是 Unity IMGUI 系統中用于創建彈出窗口的核心方法&#xff0c;具有以下關鍵特性&#xff1a; 浮動窗口&#xff1a;浮于普通 GUI 控件之上焦點控制&#xff1a;可通過點擊獲得焦…

CAN通信驅動開發注意事項

以下是CAN通信驅動開發的關鍵注意事項相關的整理,涵蓋硬件配置、協議實現、錯誤處理及性能優化等方面: 一、硬件層配置要點 引腳復用與時鐘 確認MCU的CAN控制器引腳是否與GPIO復用,正確配置復用模式。 檢查CAN控制器時鐘源,確保波特率計算基準準確。 收發器(Transceiver)…

CCF編程能力等級認證GESP—C++8級—20250628

CCF編程能力等級認證GESP—C8級—20250628單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09;判斷題&#xff08;每題 2 分&#xff0c;共 20 分&#xff09;編程題 (每題 25 分&#xff0c;共 50 分)樹上旅行遍歷計數單選題&#xff08;每題 2 分&#xff0c;共 30…

135. Java 泛型 - 無界通配符

文章目錄135. Java 泛型 - 無界通配符 (?)**1. 什么是無界通配符 (?)&#xff1f;****2. 為什么使用無界通配符&#xff1f;****3. 示例&#xff1a;使用 ? 處理任意列表****? 錯誤示例****? 正確示例****4. 為什么 List<Object> 和 List<?> 不一樣&#xff…

NOIP提高組|2010T1機器翻譯

NOIP2010年提高組第一題:機器翻譯 題目描述 小晨的電腦上安裝了一個機器翻譯軟件,他經常用這個軟件來翻譯英語文章。 這個翻譯軟件的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中文含義來替換。對于每個英文單詞,軟件會先在內存中查找這個單詞的中文含義,如果…

Change Data Capture (CDC) with Kafka Connect:實時數據同步的完整指南

Change Data Capture (CDC) 是一種高效的數據同步技術&#xff0c;能夠捕獲數據庫的變更&#xff08;插入、更新、刪除&#xff09;并實時傳輸到其他系統。結合 Kafka Connect&#xff0c;我們可以構建一個可靠、可擴展的 CDC 管道&#xff0c;實現數據庫與數據湖、數據倉庫或消…

云手機網絡加速全攻略:解決游戲卡頓與APP連接失敗困擾

用云手機玩游戲、掛腳本、跑自動任務&#xff0c;明明后臺顯示在線&#xff0c;但畫面卡頓、操作延遲、甚至APP直接“轉圈圈連不上”&#xff0c;是不是很抓狂&#xff1f;問題出在哪里&#xff1f;云手機不卡&#xff0c;網絡卡&#xff1f;其實&#xff0c;大多數云手機的性能…

從“數字土著”到“數據公民”:K-12數據倫理課程的設計、實施與成效追蹤研究

一、引言 1.1 研究背景與意義 在當今數字時代&#xff0c;信息技術以前所未有的速度滲透到社會的各個領域&#xff0c;深刻地改變了人們的生活、工作和學習方式。K-12 教育作為基礎教育的關鍵階段&#xff0c;也在數字化浪潮的推動下發生著巨大的變革。隨著大數據、人工智能…

LVS詳解

LVS(Linux virtual server)簡介即linux虛擬服務器四層負載均衡基本上都會使用 LVS&#xff0c;據了解 BAT 等大廠都是 LVS 重度使用者&#xff0c;就是因為 LVS 非常出色的性能&#xff0c;能為公司節省巨大的成本。LVS&#xff0c;全稱 Linux Virtual Server 是由國人章文嵩博…

Linux內核設計與實現 - 第5章 系統調用

目錄一、系統調用概述二、系統調用實現機制四、性能優化技術五、常見問題排查六、安全注意事項一、系統調用概述 定義 用戶空間訪問內核功能的唯一合法入口提供硬件抽象接口&#xff0c;保證系統穩定和安全 與API區別 特性系統調用API執行層級內核態用戶態實現方式軟中斷(int …

紙板制造糊機操作

糊機操作技巧:開機流程&#xff1a;首先&#xff0c;一切的一切&#xff0c;要看懂生管&#xff0c;我們要用哪個楞別&#xff0c;再看哪個門幅和材質。 也就是說&#xff0c;一切的一切&#xff0c;要生產了&#xff0c;原紙不能用錯了吧&#xff01; 第一步&#xff1a; 壓壓…

WPF 多窗口分文件實現方案

WPF 多窗口分文件實現方案 項目文件結構 WindowSwitcher/ ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Views/ │ ├── SettingsWindow.xaml │ ├── SettingsWindow.xaml.cs │ ├── DataWindow.xaml │ ├─…

在服務器(ECS)部署 MySQL 操作流程

在部署 MySQL 數據庫之前需要準備好服務器環境。可以通過以下兩種方式來準備部署服務器&#xff1a;云服務器&#xff08;ECS&#xff09;&#xff0c;如&#xff1a;阿里云、華為云、騰訊云等。IDC服務器。 現以阿里云服務器&#xff08;ECS&#xff09;Windows版本來進行部署…

Java File 類詳解:從基礎操作到實戰應用,掌握文件與目錄處理全貌

作為一名 Java 開發工程師&#xff0c;你一定在實際開發中遇到過需要操作文件或目錄的場景&#xff0c;例如&#xff1a;讀寫配置文件、上傳下載、日志處理、文件遍歷、路徑管理等。Java 提供了 java.io.File 類來幫助開發者完成這些任務。本文將帶你全面掌握&#xff1a;File …

嵌入式學習-PyTorch(9)-day25

進入尾聲&#xff0c;一個完整的模型訓練 &#xff0c;點亮的第一個led#自己注釋版 import torch import torchvision.datasets from torch import nn from torch.utils.tensorboard import SummaryWriter import time # from model import * from torch.utils.data import Dat…

用AI做帶貨視頻評論分析進階提分【Datawhale AI 夏令營】

文章目錄回顧賽題優化1??優化2??回顧賽題 模塊內容類型說明/示例賽題背景概述參賽者需構建端到端評論分析系統&#xff0c;實現商品識別、多維情感分析、評論聚類與主題提煉三大任務。商品識別輸入video_desc&#xff08;視頻描述&#xff09; video_tags&#xff08;標簽…