无法理解这个向量声明

时间:2013-03-22 01:17:24

标签: c++

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

vector<int> s[10];

这个声明实际上做了什么?是一个容量为10个整数的向量?与此相比有什么不同:

vector<int> s(10);

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

谢谢!

4 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:2)

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

的数组
vector<int> s[10];

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

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

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

答案 2 :(得分:0)

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

vector (size_type n);

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

答案 3 :(得分:0)

vector<int> s[10];表示“s”是一个数组,它有10个元素,每个元素的类型都是vector<int>

vector<int> s(10);表示“s”是vector<int>,此向量的大小为10,但这不是声明。

当声明一个指向具有大量参数和复杂返回值的kind函数的函数指针时,可能会有更复杂的声明。

例如:

vector<int> (*func[10])(int *); 这声明指针指向一个接收int *参数的函数,并返回一个vector<int>值,加上它是这种指针的数组,数组的大小为10.