如何用std::accumulate计算QVector<QVector<MyKlass>>的子向量总大小?
用std::accumulate计算嵌套QVector的子向量大小之和
你可以通过std::accumulate结合lambda表达式实现这个需求,核心是指定累加逻辑来遍历外层向量并累加每个子向量的大小:
首先需要包含std::accumulate所在的头文件:
#include <numeric>
然后替换你的循环代码为:
// 假设datas是QVector<QVector<MyKlass>>类型的变量 m_countOfSamples = std::accumulate(datas.begin(), datas.end(), 0, [](int total, const QVector<MyKlass>& subVec) { return total + subVec.size(); });
注意事项:
- 如果你的计数器
m_countOfSamples是size_t类型(更适合计数场景,避免溢出),需要调整初始值和lambda的参数类型:
m_countOfSamples = std::accumulate(datas.cbegin(), datas.cend(), static_cast<size_t>(0), [](size_t total, const QVector<MyKlass>& subVec) { return total + subVec.size(); });
- 使用
cbegin()/cend()可以确保迭代器是const类型,避免不必要的拷贝或修改。
内容的提问来源于stack exchange,提问作者user21959052
相关产品推荐
相关产品推荐

