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
529 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!

sumber:php.cn
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