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

咨询C++ STL中vector<int> a(n)与vector<int> a[n]的区别

嘿,这俩写法看着相似,但本质完全是两种不同的东西,我给你拆解明白:

1. vector<int> a(n) 是什么?

这是创建一个单独的std::vector<int>对象,变量名叫a。括号里的n是用来指定这个vector的初始大小——也就是说,它会直接分配能装下n个int的内存,并且每个int元素都会被默认初始化(对int来说就是设为0)。

举个实际的代码例子:

#include <vector>
#include <iostream>

int main() {
    int n = 5;
    std::vector<int> a(n);
    
    for (int val : a) {
        std::cout << val << " "; // 会输出:0 0 0 0 0
    }
    return 0;
}
2. vector<int> a[n] 又是什么?

这个写法是创建一个数组,数组的名字是a,数组里一共包含n个std::vector<int>类型的元素。注意:这里的n在标准C++里必须是编译期常量(有些编译器支持变长数组作为扩展,但标准不推荐这么用)。数组里的每个vector都是默认构造出来的,也就是每个都是空的、没有任何元素的vector。

看个例子就懂了:

#include <vector>
#include <iostream>

int main() {
    const int n = 3; // 必须是常量,不然部分编译器会报错
    std::vector<int> a[n];
    
    // 给数组里的第一个vector添加元素
    a[0].push_back(10);
    a[0].push_back(20);
    
    // 遍历第一个vector的元素
    for (int val : a[0]) {
        std::cout << val << " "; // 输出:10 20
    }
    
    // 数组里的第二个vector是空的,遍历它不会输出任何内容
    return 0;
}
一句话总结区别
  • vector<int> a(n):一个装了n个初始化int的vector对象
  • vector<int> a[n]:一个装了n个空vector的数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:06:36