C++STL——vector02

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好使

 
 

猜你喜欢

转载自blog.csdn.net/qq_40794602/article/details/80215825