我保存了一个QVector<QVector<MyKlass>>类型的变量,如何使用std::accumulate得到一个子向量大小的和?使用基本算法,我可以做同样的事情:
QVector<QVector<MyKlass>>
std::accumulate
for(QVector<MyKlass> &data: datas) { m_countOfSamples+=data.size(); }
但是如何使用stl呢?
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; }
1条答案
按热度按时间a6b3iqyw1#
我认为accumulate不是最合适的,但这里有一个例子: