要想使用vector容器必须包含vector头文件。
定义和初始化vector对象:
vector<int > v1;//默认初始化,v1中不含有任何元素
vector<int > v2(v1);
vector<int > v3 = v1;
vector<int > v4 (10,999);
vector<int > v5(10);
vector<int > v6{1,2,3,4,5,6,7,8,9,10};
vector<int > v7={1,2,3,4,5,6,7,8,9,10};
//这里只能用花括号不能用圆括号
vector<string > vi1{"a","b","c","d"};
vector<int > vv1(10); //vv1有10个元素,每个的值都是0
vector<int > vv2{10}; //vv2有1个元素,这个元素的值是10
vector<int > vv3(10,1); //vv3有10个元素,第个元素的值都是1
vector<int > vv4{10,1}; //vv4有2个元素,值分别是10和1
// vector<string > s1("sy"); //错误不能用字面值构建vector对象 这个与vector<int> vv2(10);这个是vv2中有10个元素
vector<string > s2{"sy"};
vector<string > s3(10); //s3有10个默认初始化的元素
vector<string > s5{10};//s5有10个默认初始化的元素
vector<string > s4{10,"sy"}; //s4有10个初始化为sy的元素
vector是一个模板而不是一个类型,由vector生成的 类型必须包含vector中元素的类型。
vector的元素也可以是vector:
vector<vector<int >> vvv1{{1,2,3},{4,5,6},{7,8,9}};
vector<vector<string > > vvv2{{"sy","sy","sy"},{"ss","ss","ss"},{"yy","yy","yy"}};
//vvv1有3个元素 vvv2也有3个元素
输出里面的元素:
cout << vvv1[0][0]<<'\n'; //输出1
cout << vvv1[0][1]<<'\n'; //输出2
cout << vvv1[0][2]<<'\n'; //输出3
cout << vvv1[1][0]<<'\n'; //输出4
cout << vvv1[1][1]<<'\n'; //输出5
cout << vvv1[1][2]<<'\n'; //输出6
cout << vvv1[2][0]<<'\n'; //输出7
cout << vvv1[2][1]<<'\n'; //输出8
cout << vvv1[2][2]<<'\n'; //输出9
vector的一些其他操作:
v.empty() | 如果v中不含有任何元素,返回真,否则返回假 |
v.size() | 返回v中元素的个数 |
v.push_back(t) | 向v的尾端添加一个值为t的元素 |
v[n] | 返回v中第n个位置上元素的引用 |
v1=v2 | 用v2中的元素的拷贝替换v1中的元素 |
v1={a,b,c.....} | 用列表中的元素拷贝替换v1中的元素 |
v1 == v2 | v1和v2相等当且仅当它们的元素数量相同,且对应的位置的元素值都相同 |
v1 ! = v2 | |
<, <=,>,>= | 以字典顺序进行比较 |
empty和size返回值的类型是由vector定义的size_type类型。
vector<int >::size_type jin;
jin = vvv1.size();
cout<<jin<<" ";
jin= vvv1.empty();
cout<<jin<< " ";
要使用size_type,需要指定它是由哪种类型定义的,vector对象的类型总是包含着元素的类型。
vector<int >::size_type //正确
vector::size_type //错误
vector<>::size_type //错误
注意:不能使用下标形式添加元素。下标是从0开始,注意使用时不要越界
vector对象的下标运算符可用于访问已存在的元素,而不能用于添加元素,也不能用于访问不存在的元素。
确保下标合法的一种手段就是尽可能使用范围for语句。