zoukankan      html  css  js  c++  java
  • 牛客--简单的数据结构(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;
    }
  • 相关阅读:
    事例学习开发WEBSERVER服务器(一)
    一个简单的减法程序看看基本功
    Linux 网络编程一步一步学(三)循环读取服务器上的数据
    screen配置——screenrc
    ubuntu NGINX LUA安装
    Linux 网络编程一步一步学(二)绑定IP 和端口
    git常用命令
    浅谈算法——冒泡排序
    ack 安装和使用事例
    Linux 网络编程一步一步学(六)客户/服务端通信
  • 原文地址:https://www.cnblogs.com/theshorekind/p/14324438.html
Copyright © 2011-2022 走看看