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

C++如何统计数组内的子数组数量?含代码示例及替代方案咨询

问题分析

你给出的代码int arr[] = {{1, 4}, {2}, {3, 2, 6}};在C/C++中无法编译运行,原因是int arr[]是一维数组,但你使用了二维结构的初始化列表,类型不匹配。要实现这种包含多个可变长子数组的结构,需要用合适的容器或数组类型,以下是具体实现和统计子数组数量的方法:

实现方案与统计方法

1. C++ 使用 std::vector(推荐)

嵌套的std::vector可以完美支持可变长度的子数组结构,统计子数组数量直接取外层vector的元素个数即可:

#include <vector>
#include <iostream>

int main() {
    std::vector<std::vector<int>> arr = {{1, 4}, {2}, {3, 2, 6}};
    int subArrCount = arr.size();
    std::cout << "子数组数量:" << subArrCount << std::endl; // 输出3
    return 0;
}

2. C语言实现方式

方法A:指针数组(支持可变长度子数组)

通过指针数组指向独立的子数组,灵活度高:

#include <stdio.h>

int main() {
    int arr1[] = {1, 4};
    int arr2[] = {2};
    int arr3[] = {3, 2, 6};
    int* arr[] = {arr1, arr2, arr3};
    
    // 通过sizeof计算指针数组的元素个数,即子数组数量
    int subArrCount = sizeof(arr) / sizeof(arr[0]);
    printf("子数组数量:%d\n", subArrCount); // 输出3
    return 0;
}

方法B:固定长度二维数组

如果可以接受统一子数组长度(不足补默认值),可以用这种方式:

#include <stdio.h>

int main() {
    // 每行长度统一为3,不足的位置补0
    int arr[3][3] = {{1, 4, 0}, {2, 0, 0}, {3, 2, 6}};
    // 行数即为子数组数量
    int subArrCount = sizeof(arr) / sizeof(arr[0]);
    printf("子数组数量:%d\n", subArrCount); // 输出3
    return 0;
}
核心逻辑总结

统计子数组数量的本质就是获取外层容器/数组的元素个数:

  • C++中嵌套vector直接调用size()方法;
  • C语言中通过sizeof(外层数组)/sizeof(外层数组[0])计算元素总数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:07:14