STL vector 详解
STL vector 详解
- STL vector 详解
- 一级目录
- 二级目录
- 三级目录
- 1. vector容器
- 2. vector 容器的初始化函数
- 1.初始化
- 2.案例
- 3. vector的访问函数
- 1. 成员函数访问
- 2. 操作符[ ]访问
- 3.案例
- 4. vector的插入函数
- 1. 语法
- 2. 案例
- 5. vector的删除函数
- 1.语法
- 2. 案例
- 6. vector的判断函数
- 7. vector的大小函数
- 8. vector的其他函数
- 1. 语法
- 2. 案例
- 结尾
一级目录
二级目录
三级目录
1. vector容器
C++中,矢量是-一个十分有用的容器。它能够像容器一样存放各
种类型的对象。也就是说, vector是-个能够存放任意类型的动态
数组。
vector是同一种类型的对象的集合,每个对象都有一个对应的整数
矢量索引值。和string对象-样,标准库将负责管理与存储元素相关的
内存。
把vector称为容器,是因为它可以包含其他对象。一个容器中的所
有对象都必须是同一种类型的。
2. vector 容器的初始化函数
1.初始化
vector name(int nSize,const &t=0); //创建一个元素为nSize,值为t的向量
vector name(const vector &t ); //复制构造函数
//复制另一个向量[begin,end)区间内的元素到该向量 ,这里要注意的是,区间是左开右闭
vector name(begin,end);
vector<int>v(10); //声明一个含10个元素的向量,默认值为0
vector<int> v1(10,2); //声明一个含10个元素,值为2的向量
vector<int>v3(v2); //将v2拷贝给v3
vector<int>v4(v2.begin(),v2.begin()+1); //把v2中的第一个赋值给v4
2.案例
#include<iostream>
#include<vector>
using namespace std;
template<class T>
void Print(vector<T> arr)
{
for(auto i=0;i<arr.size();i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
int main()
{
//vector声明
vector<int>arr={1,2,4};
Print(arr);
vector<double>arr1={1.2,4.5,6.7,8};
Print(arr1);
vector<char>arr2={'a','b','d','e'};
Print(arr2);
cout<<endl;
//vector初始化
vector<int>arr3(4);
Print(arr3);
vector<double>arr4(3,2.4);
Print(arr4);
vector<char>arr5(arr2);
Print(arr5);
vector<int>arr6(arr.begin(),arr.begin()+1);
Print(arr6);
return 0;
}
结果:
3. vector的访问函数
1. 成员函数访问
reference at(int pos); //返回pos位置元素的引用
reference front(); //返回首元素的引用
reference back(); //返回尾元素的引用
iterator begin(); //返回向量头指针,指向第一个元素
iterator end(); //返回向量尾指针,指向向量最后一个元素的下一个位置
reverse_ iterator rbegin(); //反向迭代器,指向最后一个元素
reverse_ iterator rend(); //反向迭代器,指向第一个元素之前的位置
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>v={2,3,4,1,7};
cout<<v.at(3)<<endl;
cout<<*v.begin()<<endl;
cout<<*v.end()<<endl;
cout<<v.front()<<endl;
cout<<v.back()<<endl;
cout<<*v.rbegin()<<endl;
cout<<*v.rend()<<endl;
return 0;
}
结果:
2. 操作符[ ]访问
vector<int>v1={3,4,5};
cout<<v1[2]<<endl;
3.案例
#include<iostream>
#include<vector>
using namespace std;
template<class T>
void Print(vector<T> arr)
{
for(auto i=0;i<arr.size();i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
int main()
{
//vetcor获取向量内部元素的相关函数
vector<int>arr={1,2,3,4,5,6,7,8,9};
cout<<arr.at(4)<<endl;
cout<<arr.front()<<endl;
cout<<arr.back()<<endl;
for(auto i=arr.begin();i!=arr.end();i++)
{
cout<<*i<<" ";
}
cout<<endl;
for(auto i=arr.rbegin();i!=arr.rend();i++)
{
cout<<*i<<" ";
}
cout<<endl;
return 0;
}
4. vector的插入函数
1. 语法
void push_back(const T& x)
//向量尾部增加一个元素X
iterator insert(iterator it,const T& x)
//向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x)
//向量中迭代器指向元素前增加n个相同的元素x
iterator insert(iterator it,const_ iterator first,const_ iterator last)
//向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
2. 案例
#include<iostream>
#include<vector>
using namespace std;
template<class T>
void Print(vector<T> arr)
{
for(auto i=0;i<arr.size();i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
int main()
{
//vector向量增加元素的相关函数
vector<int>arr={1,3,5};
vector<int>arr1={14,15};
arr.push_back(3);
Print(arr);
arr.insert(arr.begin(),12);
Print(arr);
arr.insert(arr.begin()+2,3,10);
Print(arr);
arr.insert(arr.begin(),arr1.begin(),arr1.end());
Print(arr);
return 0;
}
结果:
5. vector的删除函数
1.语法
iterator eraseliterator it);
//删除向量中迭代器指向元素
iterator erase(iterator first, iterator last);
//删除向量中[first,last)中元素
void pop_back();
//删除向量中最后一个元素
void clear();
//清空向量中所有元素
2. 案例
#include<iostream>
#include<vector>
using namespace std;
template<class T>
void Print(vector<T> arr)
{
for(auto i=0;i<arr.size();i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
int main()
{
//vector使用
vector<int>arr={1,2,4,6,7,5};
arr.pop_back();
Print(arr);
arr.erase(arr.begin());
Print(arr);
arr.erase(arr.begin(),arr.begin()+2);
Print(arr);
arr.clear();
Print(arr);
return 0;
}
结果:
6. vector的判断函数
vector<int>v;
cout<<v.empty()<<endl;
7. vector的大小函数
vector<int>v={3,45,6,2};
cout<<v.size()<<endl; //当前向量的元素个数
cout<<v.max_size()<<endl; //向量最大能容纳的元素个数
cout<<v.capacity()<<endl; //当前向量的容量
结果:
8. vector的其他函数
1. 语法
void swap(vector& t)
//交换两个同类型向量的数据
void assign(int n,const T& x)
//设置向量中前n个元素的值为x
void assign(const_ iterator first,const_ iterator last)
//向量中[first,last)中元素设置成当前向量元素
2. 案例
#include<iostream>
#include<vector>
using namespace std;
template<class T>
void Print(vector<T> arr)
{
for(auto i=0;i<arr.size();i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
int main()
{
vector<int>v={3,45,6,2};
v.assign(2,0);
Print(v);`
vector<int>v1;
v1.assign(5,8);
Print(v1);
v1.swap(v);
Print(v);
Print(v1);
return 0;
}
结果:
结尾
文章到这里就结束了,希望可以各位读者可以点赞支持一下。