Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memuatkan dan menghuraikan set data besar menggunakan STL dalam C++?

Bagaimana untuk memuatkan dan menghuraikan set data besar menggunakan STL dalam C++?

WBOY
WBOYasal
2024-06-01 21:18:59947semak imbas

Bagaimana untuk memuatkan dan menghuraikan set data yang besar menggunakan STL? Gunakan std::ifstream untuk memuatkan fail data. Untuk fail CSV, gunakan std::getline() untuk membaca data baris demi baris. Pisahkan setiap baris menggunakan std::stringstream dan std::getline() untuk mendapatkan medan. Simpan medan yang dihuraikan dalam struktur data seperti std::unordered_map. Gunakan data yang dihuraikan untuk pemprosesan selanjutnya.

如何在 C++ 中使用 STL 加载和解析大型数据集?

Cara untuk memuatkan dan menghuraikan set data yang besar menggunakan STL dalam C++

STL (Perpustakaan Templat Standard) menyediakan pengaturcara C++ dengan alatan berkuasa untuk mengurus dan memproses pelbagai struktur data. Dalam artikel ini, kita akan membincangkan cara menggunakan STL untuk memuatkan dan menghuraikan set data yang besar.

Memuatkan set data

Langkah pertama dalam memuatkan set data ialah membuka fail menggunakan std::ifstream: std::ifstream 打开文件:

std::ifstream input("data.csv");

对于大型数据集,可以考虑使用内存映射文件技巧来提高性能。这可以通过使用 std::memfd_create()std::mmap() 函数实现。

解析数据集

数据集加载后,下一步是解析它。对于 CSV 文件,我们可以使用 std::getline() 来逐行读取数据。然后,我们可以将每一行分割成单独的字段,使用 std::stringstreamstd::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::stringstreamrrreee

Untuk set data yang besar, pertimbangkan untuk menggunakan helah fail dipetakan memori untuk menambah baik prestasi . Ini boleh dicapai menggunakan fungsi std::memfd_create() dan std::mmap(). 🎜🎜🎜Menghuraikan Set Data 🎜🎜🎜Selepas set data dimuatkan, langkah seterusnya ialah menghuraikannya. Untuk fail CSV, kami boleh menggunakan std::getline() untuk membaca data baris demi baris. Kami kemudiannya boleh membahagikan setiap baris kepada medan berasingan menggunakan std::stringstream dan std::getline(): 🎜rrreee🎜🎜Contoh Praktikal: Menghuraikan Set Data Jualan 🎜🎜🎜 Katakan kita mempunyai fail CSV besar yang mengandungi data jualan dalam format berikut: 🎜rrreee🎜 Kita boleh memuatkan dan menghuraikan set data ini menggunakan STL: 🎜rrreee🎜🎜Kesimpulan🎜🎜🎜STL menyediakan alat yang cekap dan mudah, digunakan untuk memuatkan dan menghuraikan pelbagai struktur data, termasuk set data yang besar. Kami boleh bekerja dengan set data dengan mudah dengan menggunakan std::ifstream untuk memuatkan fail dan std::stringstream untuk menghuraikan data. 🎜

Atas ialah kandungan terperinci Bagaimana untuk memuatkan dan menghuraikan set data besar menggunakan STL dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn