zoukankan      html  css  js  c++  java
  • c++ vector容器基本用法

    • 基本用法
    #include<iostream>
    #include<vector>
    using namespace std;
    void main()
    {
        vector<int> a(10,1);//初始化容器,开辟10个单位空间·元素初始化为1
        int i;
        cout << "初始化变量" << endl;
        for (int i=0;i<a.size();i++)
        {
            cout << a[i] << "    ";
        }
        cout << "插入数据" << endl;
        cin >> a[2];
        cin>> a[5];
        cin >> a[8];
        cout << "赋值之后的变量" << endl;
    
        for (int i = 0; i < a.size(); i++)
        {
            cout << a[i] << "    ";
        }
        cout << endl;
    }

    输出结果:

    •  常见花式操作
    #include<iostream>
    #include<vector>
    using namespace std;
    void main()
    {
        int mynum[] = {8,9,12,24,35};
        int i = 0;
        vector<int> a(mynum,mynum+5);//初始化容器,开辟10个单位空间·元素初始化为1
        for (i=0;i<a.size();i++)
        {
            cout << a[i] << "    ";
        }
        cout <<endl;
        vector<int> b(a.begin(), a.begin()+3);//借助另一容器的开始,及后面连续的n个单位
        for (i = 0; i < b.size(); i++)
        {
            cout << b[i] << "    ";
        }
        cout << endl;
        vector<int> c(&mynum[3], &mynum[5]);//以数组的第三个元素地址起,3个单位
        for (i = 0; i < c.size(); i++)
        {
            cout << c[i] << "    ";
        }
    }

    输出结果:

    •  二维数组vector<vector<int>>a(4,vector<int>(4,8))
    #include<iostream>
    #include<vector>
    using namespace std;
    void main()
    {
        //用vector声明一个4*4的矩阵
        vector<vector <int>>a(4,vector<int>(4,8));
        int i = 0;
        int j = 0;
        for (i=0;i<a.size();i++)
        {
            for (j=0;j<a[i].size();j++)
            {
                cout << a[i][j] << "   ";
            }
            cout << endl;
        }
        cin >> a[0][0];
        cin >> a[1][1];
        cin >> a[2][2];
        cin >> a[3][3];
        cout << "赋值后的语句"<<endl;
        for (i = 0; i < a.size(); i++)
        {
            for (j = 0; j < a[i].size(); j++)
            {
                cout << a[i][j] << "   ";
            }
            cout << endl;
        }
    
    }

    输出结果:

    • 用vector容器盛放一个类
    #include<iostream>
    #include<string>
    #include<vector>
    using namespace std;
    class mycoach
    {
    public:
        friend ostream &operator<<(ostream &out, mycoach &t);
        mycoach(string name,int age)
        {
            this->name = name;
            this->age = age;
        }
        ~mycoach()
        {
            //cout << "回中式宿舍休息去了" << endl;
        }
    private:
        string name;
        int age;
    };
    
    ostream &operator<<(ostream &out,mycoach &t)
    {
        out<< t.name << "......" << t.age << endl;
        return out;
    }
    void main()
    {
        vector<mycoach> v1;
        mycoach cpc("陈培昌", 22), fgf("付高峰", 30), xxd("徐晓冬", 40), mjx("明佳新", 22);
        v1.push_back(cpc);//把类对象压入vector容器
        v1.push_back(fgf);
        v1.push_back(xxd);
        v1.push_back(mjx);
        for (vector<mycoach>::iterator it= v1.begin(); it!=v1.end(); it++)
        {
            cout << *it << endl;
        }
    
    }

    步骤一:声明vector变量v1

    步骤二:通过迭代器循环遍历vector容器,for(vector<类型名>::iterator it(迭代器变量名) =v1.begin(); it!=v1.end();it++)

    输出结果:

    • 把指针装入vector容器
    #include<iostream>
    #include<string>
    #include<vector>
    using namespace std;
    class mycoach
    {
    public:
        friend ostream &operator<<(ostream &out, mycoach &t);
        mycoach(string name,int age)
        {
            this->name = name;
            this->age = age;
        }
        mycoach(const mycoach &t)
        {
            this->name = t.name;
            this->age = t.age;
        }
        
        string name;
        int age;
    };
    
    ostream &operator<<(ostream &out, mycoach &t)
    {
        out << t.name << "......" << t.age << endl;
        return out;
    }
    
    void main()
    {
        mycoach cpc("陈培昌", 22), fgf("付高峰", 30), xxd("徐晓冬", 40), mjx("明佳新", 22);
        mycoach *m1,*m2, *m3, *m4;
        m1 = &cpc;
        m2 = &fgf;
        m3 = &xxd;
        m4 = &mjx;
        vector<mycoach *> v1;
        v1.push_back(m1);
        v1.push_back(m2);
        v1.push_back(m3);
        v1.push_back(m4);
        for (vector<mycoach *>::iterator it=v1.begin();it!=v1.end();it++)
        {
            cout << (*it)->name << endl;//注意!把属性声明为public,否则无法通过指针直接访问到
            cout << (**it);
        }
    }

    输出结果:

    • 查询某一元素在容器中出现的次数
    void main()
    {
        vector<int> v1;
        v1.push_back(1);
        v1.push_back(3);
        v1.push_back(5);
        v1.push_back(5);
        v1.push_back(7);
        v1.push_back(8);
        for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
        {
            cout << *it << endl;
        }
        int num = count(v1.begin(),v1.end(),5);
        cout << "5出现了" <<num<<""<< endl;
        system("pause");
    }

    输出结果:

  • 相关阅读:
    085 Maximal Rectangle 最大矩形
    084 Largest Rectangle in Histogram 柱状图中最大的矩形
    083 Remove Duplicates from Sorted List 有序链表中删除重复的结点
    082 Remove Duplicates from Sorted List II 有序的链表删除重复的结点 II
    081 Search in Rotated Sorted Array II 搜索旋转排序数组 ||
    080 Remove Duplicates from Sorted Array II 从排序阵列中删除重复 II
    079 Word Search 单词搜索
    078 Subsets 子集
    bzoj2326: [HNOI2011]数学作业
    bzoj2152: 聪聪可可
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/12082632.html
Copyright © 2011-2022 走看看