c++ 如何使用std::acumulate获取所有子向量的大小?

k75qkfdt  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(131)

我保存了一个QVector<QVector<MyKlass>>类型的变量,如何使用std::accumulate得到一个子向量大小的和?
使用基本算法,我可以做同样的事情:

for(QVector<MyKlass> &data: datas)
{
    m_countOfSamples+=data.size();
}

但是如何使用stl呢?

a6b3iqyw

a6b3iqyw1#

我认为accumulate不是最合适的,但这里有一个例子:

#include <numeric>
#include <vector>
#include <iostream>

int main()
{
    std::vector<std::vector<int>> list_of_values
    {
        { 1, 2, 3},
        { 4,5 },
        { 6, 7, 8, 9 }
    };

    // with accumulate
    auto accumulated_sum = std::accumulate(list_of_values.begin(), list_of_values.end(), std::size_t{0ul},
        [](const auto& size, const auto& vec)
        {
            return size + vec.size();
        });

    std::cout << accumulated_sum << "\n";

    // simple range based for loop
    std::size_t sum{0ul};
    for (const auto& values : list_of_values) sum += values.size();
    std::cout << sum << "\n";

    return 0;

}

相关问题