C++ 标准库提供了被封装的动态数组——vector
,这种被封装的数组可以具有各种类型。vector
不是一个类,而是一个类模版。
用vector
定义动态数组的形式为:
vector<元素类型>数组对象名(数组长度);
尖括号中的类型名表示数组元素的类型。数组长度是一个表达式,表达式中可以包含变量。
#include <iostream>
#include <vector>
using namespace std;
// 计算数组arr 中元素的平均值
double average(const vector<double> &arr){
double sum = 0;
for (unsigned i = 0; i < arr.size(); i++){
sum += arr[i];
}
return sum / arr.size();
}
int main(){
unsigned n;
cout << "n = ";
cin >> n;
vector<double> arr(n); // 创建数组对象
cout << "请输入" << n << "个元素:" << endl;
for(unsigned i = 0; i < n; i++){
cin >> arr[i];
}
cout << "平均值 = " << average(arr) << endl;
return 0;
}
注:
-
用
vector
定义的数组对象的所有元素都会被初始化。如果数组的元素类型为基本数据类型,则所有元素都会被以0初始化;如果数组元素为类需要保证作为数组元素的类具有默认构造函数。另外,初值也可以自己指定,但只能为所有元素指定相同初值
形式为:vector<元素类型>数组对象名(数组长度, 元素初值);
-
对
vector
数组对象元素的访问方式,与普通数组具有相同的形式:数组对象名[下标表达式]
-
vector
数组对象的名字表示的就是一个数组对象,而非数组的首地址,因为数组对象不是数组,而是封装了数组的对象。 -
vector
定义的数组对象具有一个重要的成员函数size()
,它会返回数组的大小。