C++ で STL を使用して大規模なデータセットをロードおよび解析するにはどうすればよいですか?

WBOY
リリース: 2024-06-01 21:18:59
オリジナル
1008 人が閲覧しました

STL を使用して大規模なデータセットをロードおよび解析するにはどうすればよいですか? std::ifstream を使用してデータ ファイルを読み込みます。 CSV ファイルの場合は、std::getline() を使用してデータを 1 行ずつ読み取ります。 std::stringstream と std::getline() を使用して各行を分割し、フィールドを取得します。解析されたフィールドを std::unowned_map などのデータ構造に保存します。解析されたデータをさらなる処理に使用します。

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

C++ で STL を使用して大規模なデータセットをロードおよび解析する方法

STL (標準テンプレート ライブラリ) は、さまざまなデータ構造を管理および処理するための強力なツールを C++ プログラマーに提供します。この記事では、STL を使用して大規模なデータ セットをロードおよび解析する方法について説明します。

データセットのロード

データセットをロードする最初のステップは、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

大規模なデータセットの場合は、メモリ マップド ファイル トリックを使用して改善することを検討してください。パフォーマンス 。これは、std::memfd_create() 関数と std::mmap() 関数を使用して実現できます。 🎜🎜🎜データセットを解析する🎜🎜🎜 データセットがロードされたら、次のステップはそれを解析することです。 CSV ファイルの場合、std::getline() を使用してデータを 1 行ずつ読み取ることができます。次に、std::stringstreamstd::getline() を使用して、各行を個別のフィールドに分割します。 🎜rrreee🎜🎜 実践的な例: 売上データ セットの解析 🎜🎜🎜次の形式の販売データを含む大きな CSV ファイルがあるとします。 🎜rrreee🎜 STL を使用してこのデータセットをロードして解析できます: 🎜rrreee🎜🎜結論🎜🎜🎜 STL は、データのロードと解析に使用される効率的で便利なツールを提供します。大規模なデータセットを含むさまざまなデータ構造。 std::ifstream を使用してファイルを読み込み、std::stringstream を使用してデータを解析することで、データセットを簡単に操作できます。 🎜

以上がC++ で STL を使用して大規模なデータセットをロードおよび解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート