vector在C++中称为容器,为什么叫容器呢?顾名思义,就是能装下别的东西(对象).当然,要使用vector容器,必须引入#include<vector>的库。
vector是一个类模板,使用模板可以编写一个类定义或函数定义,而用于多个不同的数据类型。
(一)vector有几种初始化方法:
1.vector<T>v1;//T是数据类型,v1是变量名。v1默认值是空,vetoc<int> v1;
2.vector<T>v2(v1)//这里面的v1是v2的一个副本 vecotr<int> v2(v1)
3.vector<T> v3(n,i) //v3里面有n个值为i的元素 vector<int> v3(10,3)
4.vecotr<T> v4(n) //有n个副本 vector<int> v4(10)
(二)vector操作的对象
1. v.empty(),如果v为空,则返回true,否则false
2.v.size() 返回v中的元素个数
3.v.push_back(val) 在末尾插入一个值
4.v[n] 可以用下标来访问v中的值,注意:必须是已存在的元素才能用下标操作
5 v.begin() v中第一个元素
6. v.end() 这里不是说v中最后一个元素,v.end()只是一个标识(哨兵),表示已经处理完v中的所有元素
7.vector<T>::iterator 这个是迭代器,可以跟5,6结合使用,待会看下例子。迭代器简单点就是:检查元素,并且遍历元素的数据类型。
例子:
vector<int> ival;
cout << "请输入数字(结束按Ctrl+Z):" << endl;
int num;
while (cin>>num)
{
//将num的值在ival末尾插入
ival.push_back(num);
}
//如果ival不空则返回第一个元素
if (!ival.empty())
{
cout << "ival中的第一个元素为:"<<ival[0]<<endl;
}
//输出ival中的全部值
cout << "输出方式1:" << endl;
for (vector<int>::size_type ix = 0; ix != ival.size(); ++ix)
{
cout << ival[ix] << " ";
}
cout << endl;
//或者是使用迭代器
vector<int>::iterator itr;
itr = ival.begin();
cout << "输出方式2:" << endl;
while (itr != ival.end())
{
cout << *itr << " ";
++itr;
}
cout << endl;
vector<string> sval;
cout << "请输入任意的几个字母(结束按Ctrl+z):" << endl;
string str;
while (cin>>str)
{
sval.push_back(str);
}
vector<string>::iterator sitr;
//在string中还可以这么用
for (sitr = sval.begin(); sitr != sval.end();++sitr)
{
for (string::size_type index = 0; index != (*sitr).size();++index)
{
cout << (*sitr)[index] << endl;
}
}
以上便是对vector的基本操作方法。