3

我是一个真正的 C++ 菜鸟,我有一个非常简单的问题。

vector<int> s[10];

这个声明实际上做了什么?sa 向量是否具有 10 个整数的容量?与此相比有什么区别:

vector<int> s(10);

如果这是一个愚蠢的问题,我真的很抱歉,但我真的无法理解这个声明的作用。

谢谢!

4

4 回答 4

10

第一个是 10 个空向量的数组。

第二个是用 10 个元素初始化的单个向量。

于 2013-03-22T01:18:45.517 回答
2

它是 std::vector 和内置数组类型的混合。特别是一个数组std::vector

vector<int> s[10];

表示创建 10 个矢量对象。你可以这样想:

vector<int> s0;
vector<int> s1;
...
vector<int> s10;

矢量对象的数量是固定的。每个向量中的项目数可以变化。

于 2013-03-22T01:19:38.513 回答
0

Vector 有一个这样的构造函数:

vector (size_type n);

所以第二个只是声明一个大小为 10 的 int 向量。

于 2013-03-22T01:29:21.717 回答
0

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。

于 2013-03-22T03:50:11.760 回答