10月5号第三篇文章!这次分享一下STL库中vector的使用,vector向量是一个能够存放任意类型的动态数组。
vector(向量) 头文件 <vector>
1.vector的建立
vector<数据类型> 变量名称;
vector<数据类型> 变量名称(最大容量);
2.对vector的操作
vector的函数
- void push_back(const T& x):向量尾部增加一个元素X
- void pop_back():删除向量中最后一个元素
- void clear():清空向量中所有元素
- reference at(int pos):返回pos位置元素的引用
- reference front():返回首元素的引用
- reference back():返回尾元素的引用
- bool empty() const:判断向量是否为空,若为空,则向量中无元素
- int size() const:返回向量中元素的个数
- void assign(int n,const T& x):设置向量中第n个元素的值为x
- void swap(vector&):交换两个同类型向量的数据
3.实现以上函数代码及效果
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> v;//建立一个容器v
int n; int a;
cin >> n;//向内存n个数据;
for (int i = 0; i < n; i++) {
cin >> a;
v.push_back(a);
//向内存数据
}
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';//输出v中的每个元素
}
cout << endl;
v.pop_back();
//删除最后一个元素
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';//再输出v中的每个元素
}
v.clear();//清空v
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';//再输出v中的每个元素
}
if (v.empty())//判断是否为空
cout << "v have no things";
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;//建立一个容器v
int n;
int a;
cin >> n;//向内存n个数据;
for(int i=0;i<n;i++)
{
cin >> a;
v.push_back(a);//向内存数据
}
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';//输出v中的每个元素
}
cout << endl;
cout << v.at(7) << endl;//返回第7个位置的元素
cout << v.front() << ' ' << v.back();//头元素及尾元素
cout << endl;
v.assign(10, 77777);//设置v中十个元素为77777 其余的清除掉
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';//输出v中的每个元素
}
vector<int> v1;//建立空v1
v.swap(v1);
for (int i = 0; i < v1.size(); i++) {
cout << v1[i] << ' ';//输出v1中的每个元素 注意是v1
}
return 0;
}
4.有关vector的sort
上一篇说了数组的排序,其实vector也是可以排序的!
这里用到了sort()和reverse()函数 并且在最后提到了输出vector元素的另一种方法
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
vector<int> v;//建立一个容器v
int n;
int a;
cin >> n;//向内存n个数据;
for (int i = 0; i < n; i++)
{
cin >> a;
v.push_back(a);//向内存数据
}
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';//输出v中的每个元素
}
sort(v.begin(), v.end());//从小到大
cout << "\n从小到大:\n";
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << ",";
}
cout << "\n从大到小:" << endl;
reverse(v.begin(), v.end());//从大到小
vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
for (it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
return 0;
}
Comments | NOTHING