如何使用 STL 載入和解析大型資料集?使用 std::ifstream 載入資料檔。對於 CSV 文件,使用 std::getline() 逐行讀取資料。使用 std::stringstream 和 std::getline() 分割每一行以取得欄位。將已解析的欄位儲存在資料結構(如 std::unordered_map)中。使用已解析的資料進行進一步處理。
如何在C++ 中使用STL 載入和解析大型資料集
STL(標準範本庫)為C++ 程式設計師提供了強大的工具,用於管理和處理各種資料結構。在本文中,我們將討論如何使用 STL 來載入和解析大型資料集。
載入資料集
載入資料集的第一步是使用std::ifstream
開啟檔案:
std::ifstream input("data.csv");
對於大型資料集,可以考慮使用記憶體映射檔案技巧來提高效能。這可以透過使用 std::memfd_create()
和 std::mmap()
函數來實現。
解析資料集
資料集載入後,下一步就是解析它。對於 CSV 文件,我們可以使用 std::getline()
來逐行讀取資料。然後,我們可以將每一行分割成單獨的字段,使用std::stringstream
和std::getline()
:
std::string line; while (std::getline(input, line)) { std::stringstream ss(line); std::string field; std::vector<std::string> fields; while (std::getline(ss, field, ',')) { fields.push_back(field); } // 处理已解析的字段 }
實戰案例:解析銷售資料集
假設我們有一個大型CSV 文件,其中包含以下格式的銷售資料:
product_id,product_name,quantity_sold,price 1,iPhone 13 Pro,100,999 2,Apple Watch Series 7,50,399 3,MacBook Air M2,75,1299
我們可以使用STL 載入和解析此資料集:
std::ifstream input("sales.csv"); std::unordered_map<int, std::pair<std::string, int>> sales; std::string line; while (std::getline(input, line)) { std::stringstream ss(line); int product_id; std::string product_name; int quantity_sold; float price; std::getline(ss, product_id, ','); std::getline(ss, product_name, ','); std::getline(ss, quantity_sold, ','); std::getline(ss, price, ','); sales[product_id] = {product_name, quantity_sold}; } // 使用已解析的数据
結論
STL 提供了一個高效、方便的工具,用於載入和解析各種資料結構,包括大型資料集。透過使用 std::ifstream
載入檔案和 std::stringstream
解析數據,我們可以輕鬆地處理資料集。
以上是如何在 C++ 中使用 STL 載入和解析大型資料集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!