以下是由庭博网校原创,转载时请注明出处。金庭波 QQ:14280784 86974558
vector 是什么?
vector就是数组在C++中的另一种称呼,它与C的数组的区别在于,它是变长的,C的数组是定长的。所以在写代码的时候,你要考虑它的长度是变化的这个特征。
在使用时要 #include <vector>
vector 就是以前的数组成精了,换了个名字叫“容器”。原形其实是“类模板”。
也就是说它既有数组的基因(数据类型是同一种),也有类模板的基因(用于多种不同类型),
听起来有点矛盾,实际上就是,你要么就是整型的数组,要么就是字符串的数组的意思。
例如:vector<int> ivec; //定义了一个整形对象列表
Vector<Sales_item> Sales_vec; //定义了一个Sales_item类类型的对象列表Sales_vec;
“列表”两个字不能少,表示是一个数组的意思。
以后定义数组的时候,就用verctor了;
vector 对象的定义和初始化有四种方法:
1、vector<T> v1; 例如: vector<int> v1; 表示定义了一个整型数组,元素的值为0
2、vector<T> v2(v1); 例如 vector<int> v2(v1) 表示定义了一个v2数组,并用v1进行初始化;
3、vector<T> v3(n,i); 例如vector<int> v3(5,10)表示定义了一个v3数组,有5个元素,初始值都为10;
4、vector<T> v4(n); 例如vector<string> v4(5)表示定义了一个字符串的v4数组,有5个元素。
第4条要说道说道一下了:
对于C语言内置的类型如int,标准库都用0值进行初始化。
对于含有构造类型的类型,将用它们默认的构造函数进行初始化;
对于没有带构造函数的类型,标准库为它初始化。
以下例子是说明:返回s1.size()函数的类型是vector<string >::size_type;而不是int型。
vector<string>::size_type;中的string说明这个size()的返回值是在 string中定义的。
#include "iostream"
#include "string"
#include "vector"
using namespace std;
int main()
{
vector<string> s1(10,"hi");
vector<string>::size_type i;
i=s1.size();
cout<<i<<endl;
for(i=0;i<s1.size();i++)
cout<<s1[i]<<" ";
getchar();
return 0;
}
//以下例子说明用下标的方法向vector添加元素是错误的
vector<int> ivec; //先定义一个vector数组
for(vector<int>::size_type i=0;i!=10;i++) //然后用循环值向容器添加值
ivec[i]=i;
应该象下面这样做才是正确的:
vector<int> ivec;
for(vector<int>::size_type i=0;i!=10;i++)
ivce.push_back(i);
下面是一个完整的输入字符串,显示字符串的例子