咨询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
相关产品推荐
相关产品推荐

