1.vector的插入
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void fun(int n)
{
cout<<n<<endl;
}
int main()
{
vector<int>vec(10,3);
vec.insert(vec.begin()+2,12);//在下标为2的地方插入一个12
for_each(vec.begin(),vec.end(),fun);
cout<<"**************************\n";
vec.insert(vec.begin()+3,5,34);//在下标为3的地方插入5个34
vector<int>vec1(2,88);
for_each(vec.begin(),vec.end(),fun);
cout<<"**************************\n";
vec.insert(vec.begin()+2,vec1.begin(),vec1.end());//引用迭代器的插入
for_each(vec.begin(),vec.end(),fun);
return 0;
}
补充一下,push_back是从尾部插入,他的效率是比insert高的,有人可能会问,为什么不用链表呢,因为这个vector本身的设计就是根据数组设计的,他就得保留数组的特性,不能为了效率而失去了本来的特性,成了四不像
2.vector的删除
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void fun(int n)
{
cout<<n<<endl;
}
int main()
{
vector<int>vec(10,3);
for_each(vec.begin(),vec.end(),fun);
cout<<"****************************\n";
vec.pop_back();//直接从尾部删除
for_each(vec.begin(),vec.end(),fun);
cout<<"****************************\n";
vec.erase(vec.begin()+2);//删除指定下标的值
for_each(vec.begin(),vec.end(),fun);
cout<<"****************************\n";
vec.erase(vec.begin(),vec.begin()+2);//删除指定的区间
for_each(vec.begin(),vec.end(),fun);
cout<<"****************************\n";
return 0;
}
3.交换两个vector
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void fun(int n)
{
cout<<n<<endl;
}
int main()
{
vector<int>vec(10,3);
vector<int>vec1(10,2);
vec.swap(vec1);
for_each(vec.begin(),vec.end(),fun);
cout<<"***************************\n";
for_each(vec1.begin(),vec1.end(),fun);
return 0;
}
3.vector之运算符重载,因为和string类型是几乎一模一样的,所以仅仅是举一个小例子
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void fun(int n)
{
cout<<n<<endl;
}
int main()
{
vector<int>vec(10,3);
vector<int>vec1(10,2);
cout<<vec1<vec2<<endl;//比较的规则就是和string类型是一样的
return 0;
}
4.vector的排序算法
#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
void fun(int n)
{
cout<<n<<endl;
}
int main()
{
vector<int> vec;
vec.push_back(5);
vec.push_back(3);
vec.push_back(7);
vec.push_back(3);
vec.push_back(9);
sort(vec.begin(),vec.end());//可以仅仅对其中的一小段进行处理,默认是从小到大排序
for_each(vec.begin(),vec.end(),fun);
cout<<"***********************";
sort(vec.begin(),vec.end(),greater<int>());
for_each(vec.begin(),vec.end(),fun);
return 0;
}
5.可能会听到array类型,能用vector类型的就用vector类型,array类型没有vector好使