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

如何为一维、二维vector或数组整体赋指定值,无需循环单行实现?

C++ 二维数组/二维vector单行赋值方案

固定长度原生二维数组(char a[n][m] 类型)

  • 通用赋值方案(兼容任意char类型值):
    使用std::fill遍历整个数组的连续内存空间完成赋值,示例为给所有元素赋值为'x':
    std::fill(&a[0][0], &a[0][0] + sizeof(a) / sizeof(a[0][0]), 'x');
    
    说明:&a[0][0]取数组首元素地址,加上总元素数得到尾后地址,固定长度二维数组所有元素在内存中连续排布,可直接批量填充
  • 赋值为0的简化方案:
    可以直接用memset实现,效率更高:
    memset(a, 0, sizeof(a));
    
    注意:memset按字节赋值,仅适合赋值0、-1或单字节char类型值,不要用于给int等多字节类型数组赋非单字节匹配的数值

若你使用的是通过new申请的二级指针形式动态二维数组,可逐行调用std::fill实现单行逻辑:

for (int i = 0; i < n; i++) std::fill(a[i], a[i] + m, 目标值);

二维vector(std::vector<std::vector<T>> 类型)

两种常用单行实现方案:

  • 保留原有内存空间的赋值方案,示例为给所有元素赋值为1:
    for (auto& row : vec2d) std::fill(row.begin(), row.end(), 1);
    
  • 不需要保留原有空间时,可直接构造新二维vector赋值,写法更简洁:
    vec2d = std::vector<std::vector<int>>(n, std::vector<int>(m, 目标值));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:00:05