Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lade und parse ich große Datensätze mit STL in C++?

Wie lade und parse ich große Datensätze mit STL in C++?

WBOY
WBOYOriginal
2024-06-01 21:18:59947Durchsuche

Wie lade und parse ich große Datensätze mit STL? Verwenden Sie std::ifstream, um Datendateien zu laden. Verwenden Sie für CSV-Dateien std::getline(), um die Daten Zeile für Zeile zu lesen. Teilen Sie jede Zeile mit std::stringstream und std::getline() auf, um die Felder zu erhalten. Speichern Sie analysierte Felder in einer Datenstruktur wie std::unordered_map. Verwenden Sie die geparsten Daten zur weiteren Verarbeitung.

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

So laden und analysieren Sie große Datensätze mit STL in C++

STL (Standard Template Library) bietet C++-Programmierern leistungsstarke Tools zum Verwalten und Verarbeiten verschiedener Datenstrukturen. In diesem Artikel besprechen wir, wie man STL zum Laden und Analysieren großer Datensätze verwendet.

Einen Datensatz laden

Der erste Schritt beim Laden eines Datensatzes besteht darin, die Datei mit std::ifstream zu öffnen: 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

Bei großen Datensätzen sollten Sie zur Verbesserung den Trick mit der Speicherzuordnungsdatei verwenden Leistung . Dies kann mit den Funktionen std::memfd_create() und std::mmap() erreicht werden. 🎜🎜🎜Datensatz analysieren 🎜🎜🎜Nachdem der Datensatz geladen wurde, besteht der nächste Schritt darin, ihn zu analysieren. Für CSV-Dateien können wir std::getline() verwenden, um die Daten Zeile für Zeile zu lesen. Anschließend können wir jede Zeile mithilfe von std::stringstream und std::getline() in separate Felder aufteilen: 🎜rrreee🎜🎜Praktisches Beispiel: Parsen eines Verkaufsdatensatzes 🎜🎜🎜 Angenommen, wir haben eine große CSV-Datei mit Verkaufsdaten im folgenden Format: 🎜rrreee🎜 Wir können diesen Datensatz mit STL laden und analysieren: 🎜rrreee🎜🎜Fazit🎜🎜🎜STL bietet effiziente und praktische Tools zum Laden und Analysieren von a Vielzahl von Datenstrukturen, einschließlich großer Datensätze. Wir können den Datensatz einfach verarbeiten, indem wir std::ifstream zum Laden der Datei und std::stringstream zum Parsen der Daten verwenden. 🎜

Das obige ist der detaillierte Inhalt vonWie lade und parse ich große Datensätze mit STL in C++?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn