我是C ++中的一个真正的菜鸟,我有一个非常简单的问题。
vector<int> s[10];
这个声明实际上做了什么?是一个容量为10个整数的向量?与此相比有什么不同:
vector<int> s(10);
如果这是一个愚蠢的问题,我真的很抱歉,但我真的无法理解这些声明的作用。
谢谢!
答案 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.