You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取二维std::vector中内层vector的最大size()?

获取嵌套vector内层最大size的简洁方法

针对std::vector<std::vector<T>>这种嵌套结构,有几种简洁的方式可以获取内层vector的最大size():

方法一:使用std::max_element配合lambda(C++11+)

利用STL的max_element算法,结合lambda表达式直接比较内层vector的大小:

#include <vector>
#include <algorithm>

template <typename T>
size_t get_max_inner_size(const std::vector<std::vector<T>>& nested_vec) {
    if (nested_vec.empty()) return 0;
    auto max_iter = std::max_element(nested_vec.begin(), nested_vec.end(),
        [](const auto& inner_a, const auto& inner_b) {
            return inner_a.size() < inner_b.size();
        });
    return max_iter->size();
}

max_element会遍历外层vector,找到size最大的内层vector,最后返回其size。外层为空时直接返回0,避免空迭代器访问错误。

方法二:范围for循环遍历更新(C++11+)

这种写法直观易懂,不需要额外引入算法头文件:

#include <vector>

template <typename T>
size_t get_max_inner_size(const std::vector<std::vector<T>>& nested_vec) {
    size_t max_size = 0;
    for (const auto& inner_vec : nested_vec) {
        if (inner_vec.size() > max_size) {
            max_size = inner_vec.size();
        }
    }
    return max_size;
}

初始化最大size为0,逐个遍历内层vector,实时更新最大值,逻辑清晰,适合大多数场景。

方法三:使用std::accumulate函数式写法(C++11+)

用accumulate实现函数式的最大值计算,核心逻辑一行搞定:

#include <vector>
#include <numeric>

template <typename T>
size_t get_max_inner_size(const std::vector<std::vector<T>>& nested_vec) {
    return std::accumulate(nested_vec.begin(), nested_vec.end(), 0uz,
        [](size_t current_max, const auto& inner_vec) {
            return std::max(current_max, inner_vec.size());
        });
}

accumulate从初始值0uz(size_t类型的0)开始,每次迭代用std::max比较当前最大值和内层vector的size,最终返回累计的最大值。外层为空时自然返回0。


内容的提问来源于stack exchange,提问作者jensph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:28:16