我们今天只说他是怎么使用的,创建和具体函数我先列出给各位
一、创建向量
Vector<类型>标识符
Vector<类型>标识符(最大容量)
Vector<类型>标识符(最大容量,初始所有值)
int i[5]={1,2,3,4,5};
Vector<类型>vi(I,i+2);//得到i索引值为3以后的值
Vector< vector< int> >v; 二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过
二、内置函数 1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5.end 得到数组的最后一个单元+1的指针 6.front 得到数组头的引用 7.back 得到数组的最后一个单元的引用 8.max_size 得到vector最大可以是多大 9.capacity 当前vector分配的大小 10.size 当前使用数据的大小 11.resize 改变当前使用数据的大小,如果它比当前使用的大,则填充默认值 12.reserve 改变当前vecotr所分配空间的大小 13.erase 删除指针指向的数据项 14.clear 清空当前的vector 15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1) 16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1) 17.empty 判断vector是否为空 18.swap 与另一个vector交换数据
下面我将用代码让各位认识vector的使用。
#include <vector> #include <iostream> #include <algorithm> using namespace std; //sort降序 bool cmp(int a,int b) { return a > b; } void vector_learn() { //定义一个向量 std::vector <int> vec; cout << "使用数组输出:" << '\n'; for(int i = 0;i < 10;++i) { //在末尾添加一个元素 vec.push_back(i); cout << vec[i] << ",";//方法一,直接使用数组方式访问 } //删除一个末尾元素 vec.pop_back(); cout << '\n'; //方法二,使用迭代器将容器中数据输出 vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素 cout << "使用迭代器输出:" << '\n'; for(it = vec.begin();it != vec.end();it++) { cout << *it << " "; } cout << '\n'; //取向量容器长度 for(int i = 0;i < vec.size();i++) { cout << vec[i] << ","; } //清空数据 vec.clear(); //不执行 for(int i = 0;i < vec.size();i++) { cout << vec[i] << ","; } cout << '\n'; //向量排序 vector <int> obj; obj.push_back(1); obj.push_back(3); obj.push_back(0); //升序 sort(obj.begin(),obj.end()); cout << "从小到大排序:" << endl; for(int i = 0;i < obj.size();i++) { cout << obj[i] << ","; } cout << '\n'; //降序 //sort(obj.begin(),obj.end(),cmp); for(int i = 0;i < obj.size();i++) { cout << obj[i] << ","; } cout << '\n'; //逆序,翻转函数区间内的顺序 reverse(obj.begin(),obj.end()); for(int i = 0;i < obj.size();i++) { cout << obj[i] << ","; } cout << '\n'; return ; }
//使用向量手动输入一个二维数组 void cin_vector() { vector< vector<int> > arry; //写成arry(5) 可理解为设定大小5行 vector<int> d; //定义一个一维的数组; int i, j, k, n; int number; scanf("%d", &n ); /*可以这样实现对vector二维的初始化,得到的是n行n列的矩阵*/ for( i = 0; i < n; i++ ) { for( j = 0; j < n; j++ ) { scanf("%d", &number ); d.push_back( number ); } sort( d.begin(), d.end() ); //pai xu xuyao头文件algorithm arry.push_back( d ); //d.clear(); //清空一维的数组 d.resize(0); } /*遍历输出*/ if( arry.empty() ) printf("0\n"); else{ for( i = 0; i < arry.size(); i++ ) { for( j = 0; j < arry[0].size(); j++ ) { printf("%d ", arry[i][j] ); } printf("\n"); } } return ; }