You need to enable JavaScript to run this app. C++中如何获取vector<int>数组的长度并实现遍历操作
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何获取vector<int>数组的长度并实现遍历操作

问题解答:C++中遍历vector<int> a[]类型数组的方法

vector<int> a[]是元素类型为vector<int>的C++原生数组,原生数组本身没有封装size()成员方法,所以调用a.size()会直接编译报错,不同场景下的遍历方案如下:

场景1:数组在当前作用域内定义,未作为参数传递给其他函数

这种情况下可以通过sizeof计算数组总长度,补全循环:

// 示例数组定义
vector<int> a[10]; 
// 补全后的外层循环
for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++){
    // 遍历当前vector内的所有元素
    for(int j = 0; j < a[i].size(); j++){
        // 访问a[i][j]即可处理对应元素
    }
}

更简便的写法是使用C++11及以上版本支持的范围for循环,不需要手动计算长度:

for(auto& inner_vec : a){
    for(int num : inner_vec){
        // 直接处理每个int类型的元素num
    }
}

场景2:数组作为函数参数传入

原生数组作为函数参数时会退化为指针,此时sizeof(a)得到的是指针的长度(通常为4或8字节),无法正确计算数组长度,有两种解决方法:

  • 方法1:额外传递数组长度参数
// 函数定义
void traverse(vector<int> a[], int arr_len){
    for(int i = 0; i < arr_len; i++){
        for(int j = 0; j < a[i].size(); j++){
            // 处理元素
        }
    }
}
// 调用时传入计算好的长度
vector<int> a[10];
traverse(a, sizeof(a)/sizeof(a[0]));
  • 方法2(更推荐):放弃原生数组,改用vector<vector<int>>类型,直接调用size()方法获取长度
// 定义改为二维vector
vector<vector<int>> a;
// 循环直接写即可
for(int i = 0; i < a.size(); i++){
    // 后续遍历逻辑不变
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 13:30:01