Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Menjumlahkan Unsur-unsur Vektor C dengan Cekap?

Bagaimanakah Saya Boleh Menjumlahkan Unsur-unsur Vektor C dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-11-24 09:15:14895semak imbas

How Can I Efficiently Sum the Elements of a C   Vector?

Menentukan Jumlah Unsur dalam Vektor C

Dalam C , mencari jumlah unsur dalam std::vector memerlukan gelung atau algoritma standard untuk mengulang dan mengumpul nilai. Pilihan kaedah bergantung pada versi C yang digunakan, dan setiap pendekatan menawarkan kelebihan tersendiri.

C 03

  • Klasik untuk gelung: Menggunakan gelung tradisional untuk lelaran melalui elemen dan menambah jumlah larian pembolehubah.

    int sum_of_elems = 0;
    for (auto it = vector.begin(); it != vector.end(); ++it)
      sum_of_elems += *it;
  • algoritma terkumpul: Algoritma ini disediakan oleh pengepala mengumpul jumlah elemen yang dilalui melalui julat lelaran.

    #include <numeric>
    int sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);

C 11 dan Lebih Tinggi

  • std::kumpul dengan auto-taip: Algoritma std::accumulate yang sama boleh digunakan dengan sedikit pengubahsuaian untuk menyimpulkan jenis pemulangan secara automatik berdasarkan jenis elemen vektor.

    #include <numeric>
    decltype(vector)::value_type sum_of_elems = std::accumulate(vector.begin(), vector.end(), decltype(vector)::value_type(0));
  • std::for_each loop: Sintaks gelung ini menggunakan fungsi lambda pada setiap elemen vektor, mengemas kini pembolehubah jumlah di dalamnya skop.

    std::for_each(vector.begin(), vector.end(), [&](int n) { sum_of_elems += n; });
  • Berasaskan julat untuk gelung: Gula sintaktik untuk gelung ini berulang ke atas elemen secara langsung tanpa objek lelaran yang berasingan.

    for (auto& n : vector)
      sum_of_elems += n;

C 17 dan Kemudian

  • std::reduce algorithm: Algoritma ini menggabungkan elemen koleksi menjadi satu hasil tunggal menggunakan operator binari tertentu, dalam kes ini penambahan . Ia juga secara automatik menyimpulkan jenis hasil.

    #include <numeric>
    auto result = std::reduce(v.begin(), v.end());

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjumlahkan Unsur-unsur Vektor C dengan Cekap?. 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