Rumah > pembangunan bahagian belakang > C++ > Apakah Cara Cekap untuk Menjumlahkan Elemen std::vector dalam C ?

Apakah Cara Cekap untuk Menjumlahkan Elemen std::vector dalam C ?

DDD
Lepaskan: 2024-12-03 16:45:13
asal
630 orang telah melayarinya

What are the Efficient Ways to Sum the Elements of a std::vector in C  ?

Kaedah Cekap untuk Menjumlahkan Elemen dalam std::vector

Dalam senario di mana anda perlu memastikan jumlah kumulatif elemen dalam std ::vektor, beberapa pendekatan cekap wujud.

C 03 Penyelesaian:

  1. Klasik Untuk Gelung:

    int sum_of_elems = 0;
    for (std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it)
        sum_of_elems += *it;
    Salin selepas log masuk
  2. Standard Algoritma:

    #include <numeric>
    
    sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);
    Salin selepas log masuk

    Nota: Jenis hujah akhir menentukan nilai awal dan jenis hasil. Untuk input titik terapung, gunakan 0.0 dan bukannya 0.

C 11 dan Sambungan Atas:

  1. Jenis Vektor Automatik Pengendalian:

    #include <numeric>
    
    sum_of_elems = std::accumulate(vector.begin(), vector.end(),
                                   decltype(vector)::value_type(0));
    Salin selepas log masuk
  2. std::for_each Penggunaan:

    std::for_each(vector.begin(), vector.end(), [&](int n) {
        sum_of_elems += n;
    });
    Salin selepas log masuk
  3. Berasaskan Julat Untuk Gelung:

    for (auto& n : vector)
        sum_of_elems += n;
    Salin selepas log masuk

C 17 dan Penambahan Kemudian:

  1. std:: kurangkan dengan Jenis Keputusan Automatik:

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

    Ini lebihan fungsi membolehkan pemprosesan selari untuk koleksi yang banyak.

Atas ialah kandungan terperinci Apakah Cara Cekap untuk Menjumlahkan Elemen std::vector dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan