牛客--简单的数据结构(STL--vector)

向量(Vector)是一个封装了动态大小数组的顺序容器。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组

可以当需要大量插入,删除等操作时,可以用STL中的vector来代替普通数组。可用于普通数组超内存的情况和以邻接矩阵的方式存储图的情况。

需要声明头文件<vector>

vector 常用操作:

#include<vector>
//声明一个vector容器 
vector<int> v;
//常用操作 
    v.push_back();//vector后加一个元素
    v.pop_back();//删去vector的尾元素
    v.size();//获得vector中元素个数
    v.clear();//清空vector
    v.insert(it,x);//向vector任意迭代器it处插入一个元素x
    v.erase(it);//删去单个元素
    v.erase(first,last);//删去区间[first,last)内的所有元素

声明二维vector  vector<vector<int> > v (注意> >间的空格!!,>>是位运算符)

使用迭代器遍历容器

迭代器声明方法 vector<int> :: iterator it; 

以题  简单的数据结构   为例

题目要求实现以下功能:

一开始该容器为空,有以下七种操作。

1 a从前面插入元素a

2 从前面删除一个元素

3 a从后面插入一个元素

4 从后面删除一个元素

5 将整个容器头尾翻转

6 输出个数和所有元素

7 对所有元素进行从小到大排序

代码如下:

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
    vector<int> v;
    int n,m;
    int op;
    cin>>n>>m;
    while(m--)
    {
        scanf("%d",&op);
        if(op==1)
        {
            int a;
            scanf("%d",&a);
            vector<int> :: iterator it;
            it=v.begin();
            v.insert(it,a);  
        }
        else if(op==2)
        {
            v.erase(v.begin());
        }
        else if(op==3)
        {
            int a;
            scanf("%d",&a);
            v.push_back(a);
        }
        else if(op==4)
        {
            v.erase(v.end()-1);
        }
        else if(op==5)
        {
            reverse(v.begin(),v.end());//C++库函数 
        }
        else if(op==6)
        {
            printf("%d
",v.size());
            for(int i=0;i<v.size();i++)
            {
                printf("%d",v[i]);
                if(i!=v.size()-1)
                printf(" ");
            }
            printf("
");
        }
        else if(op==7)
        {
            sort(v.begin(),v.end());//C++库函数 
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/theshorekind/p/14324438.html