前言:
俗话说的“多一事不如少一事”,在我们编程的同时也是如此,越简单,越简便,效率越高谁最好的,有现成的何必不用,顺序表的建立太过于繁琐了,我们可以直接使用 vector 头文件中的,vector 容器来简化我们的顺序表,何乐而不为呢。
vector的定义:
官方文档的解释:
我的解释:
我认为 vector 可以理解为我们顺序表中的动态顺序表,其可以特点和顺序表中的动态顺序表极为相似,并且其操作也比其更加简便,省去了很多的步骤,为我们的编程带来了更多的便捷。
vector的创建:
文字说明:
1.在我们创建vector之前我们要先引用其头文件<vector>
2.其创建的格式为: vector<数据类型> 名称;
代码举例:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> num;
return 0;
}
vector的初始化:
1.在创建的时候便初始化:
vector<int> num{1,2,3,4,5,6};
2.不赋值的初始化(默认为0):
vector<int> num(3);//初始化了3个0
3.赋值的初始化:
vector<int> num(3,4);//赋值了3个4的初始化
vector的访问:
vector的访问虽然可以像数组一样访问,但我们一般不会这样访问,一般我们会使用真实的物理地址进行访问,我们一般直接用auto来判断其数据结构,而不是使用int,double等,其中物理地址是一个指针。
代码:
#include<iostream> #include<vector> using namespace std; int main() { vector<int> num{1,2,3,4,5,6,7,8,9}; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } //也可以使用 it<num.end()+n (n为数字,代表访问到第几个) return 0; }
结果:
vector的基本操作:
1.push_back():
解释:
在vector的后面直接加一个数据。
举例:
代码:
#include<iostream> #include<vector> using namespace std; int main() { vector<int> num{1,2,3,4,5,6,7,8,9}; cout << "push_back前的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } cout << endl; num.push_back(10); cout << "push_back后的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } return 0; }
结果:
2.pop_back() :
解释:
将vector的最后的数据删除。
举例:
代码:
#include<iostream> #include<vector> using namespace std; int main() { vector<int> num{1,2,3,4,5,6,7,8,9}; cout << "pop_back前的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } cout << endl; num.pop_back(); cout << "pop_back后的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } return 0; }
结果:
3.erase():
解释:
删除单个或者一个区域内的元素。
举例:
代码:
#include<iostream> #include<vector> using namespace std; int main() { vector<int> num{1,2,3,4,5,6,7,8,9}; cout << "erase前的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } cout << endl; num.erase(num.begin()+1,num.begin()+3 ); //()中“,”前为开始位置,后为结束位置,若省略第一个和“,”则默认从开头开始 cout << "erase后的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } return 0; }
结果:
4.size():
解释:
查看vector的长度,类似于顺序表中的len。
举例:
代码:
#include<iostream> #include<vector> using namespace std; int main() { vector<int> num{1,2,3,4,5,6,7,8,9}; cout <<"num的长度为:"<<endl << num.size(); return 0; }
结果:
5.clear():
解释:
清空vector中的所有东西。
举例:
代码:
#include<iostream> #include<vector> using namespace std; int main() { vector<int> num{1,2,3,4,5,6,7,8,9}; cout <<"num在clear前的长度为:"<<endl << num.size()<<endl; num.clear(); cout << "num在clear后的长度为:" << endl << num.size(); return 0; }
结果:
6.insert():
解释:
插入元素。
举例:
代码:
#include<iostream> #include<vector> using namespace std; int main() { vector<int> num{1,2,3,4,5,6,7,8,9}; cout << "insert前的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } cout << endl; num.insert(num.begin() + 2, 100); cout << "insert后的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } return 0; }
结果:
7.sort():
解释:
排序(不属于vector的操作,不过多解释,点到为止)位于<algorithm>头文件中。
举例:
代码:
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { vector<int> num{1,3,6,2,7,8,9,100}; cout << "sort前的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } cout << endl; sort(num.begin(), num.end()); cout << "sort后的结果:" << endl; for (auto it = num.begin(); it != num.end(); it++) { cout << *it << " "; } return 0; }
结果: