我是一个真正的 C++ 菜鸟,我有一个非常简单的问题。
vector<int> s[10];
这个声明实际上做了什么?sa 向量是否具有 10 个整数的容量?与此相比有什么区别:
vector<int> s(10);
如果这是一个愚蠢的问题,我真的很抱歉,但我真的无法理解这个声明的作用。
谢谢!
我是一个真正的 C++ 菜鸟,我有一个非常简单的问题。
vector<int> s[10];
这个声明实际上做了什么?sa 向量是否具有 10 个整数的容量?与此相比有什么区别:
vector<int> s(10);
如果这是一个愚蠢的问题,我真的很抱歉,但我真的无法理解这个声明的作用。
谢谢!
第一个是 10 个空向量的数组。
第二个是用 10 个元素初始化的单个向量。
它是 std::vector 和内置数组类型的混合。特别是一个数组std::vector
;
vector<int> s[10];
表示创建 10 个矢量对象。你可以这样想:
vector<int> s0;
vector<int> s1;
...
vector<int> s10;
矢量对象的数量是固定的。每个向量中的项目数可以变化。
Vector 有一个这样的构造函数:
vector (size_type n);
所以第二个只是声明一个大小为 10 的 int 向量。
vector<int> s[10];
表示“s”是一个数组,它有 10 个元素,每个元素的类型都是vector<int>
.
vector<int> s(10);
表示 "s" 是 a vector<int>
,并且这个向量的大小是 10,但这不是声明。
可以有更复杂的声明,当声明一个指向具有很多参数和复杂返回值的类函数的函数指针时。
例如:
vector<int> (*func[10])(int *);
这里声明指针指向一个接收int *
参数的函数,并返回一个vector<int>
值,加上它是一个这种指针的数组,数组的大小是10。