• c++vector 遍历 安静点


     vector存放内置数据类型

    容器: vector

    算法: for_each

    迭代器: vector<int>::iterator

    示例:

    #include <vector>
    #include <algorithm>
    
    void MyPrint(int val)
    {
        cout << val << endl;
    }
    
    void test01() {
    
        //创建vector容器对象,并且通过模板参数指定容器中存放的数据的类型
        vector<int> v;
        //向容器中放数据
        v.push_back(10);
        v.push_back(20);
        v.push_back(30);
        v.push_back(40);
    
        //每一个容器都有自己的迭代器,迭代器是用来遍历容器中的元素
        //v.begin()返回迭代器,这个迭代器指向容器中第一个数据
        //v.end()返回迭代器,这个迭代器指向容器元素的最后一个元素的下一个位置
        //vector<int>::iterator 拿到vector<int>这种容器的迭代器类型
    
        vector<int>::iterator pBegin = v.begin();
        vector<int>::iterator pEnd = v.end();
    
        //第一种遍历方式:
        while (pBegin != pEnd) {
            cout << *pBegin << endl;
            pBegin++;
        }
    
        
        //第二种遍历方式:
        for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
            cout << *it << endl;
        }
        cout << endl;
    
        //第三种遍历方式:
        //使用STL提供标准遍历算法  头文件 algorithm
        for_each(v.begin(), v.end(), MyPrint);
    }
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }

    2 Vector存放自定义数据类型

    学习目标:vector中存放自定义数据类型,并打印输出

    示例:

    //自定义数据类型
    class Person {
    public:
        Person(string name, int age) {
            mName = name;
            mAge = age;
        }
    public:
        string mName;
        int mAge;
    };
    //存放对象
    void test01() {
    
        vector<Person> v;
    
        //创建数据
        Person p1("aaa", 10);
        Person p2("bbb", 20);
        Person p3("ccc", 30);
        Person p4("ddd", 40);
        Person p5("eee", 50);
    
        v.push_back(p1);
        v.push_back(p2);
        v.push_back(p3);
        v.push_back(p4);
        v.push_back(p5);
    
        for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {  
            cout << "Name:" << (*it).mName << " Age:" << (*it).mAge << endl;
    
        }
    }
    
    
    //放对象指针
    void test02() {
    
        vector<Person*> v;
    
        //创建数据
        Person p1("aaa", 10);
        Person p2("bbb", 20);
        Person p3("ccc", 30);
        Person p4("ddd", 40);
        Person p5("eee", 50);
    
        v.push_back(&p1);
        v.push_back(&p2);
        v.push_back(&p3);
        v.push_back(&p4);
        v.push_back(&p5);
    
        for (vector<Person*>::iterator it = v.begin(); it != v.end(); it++) { 
            Person* p = (*it);
            cout << "Name:" << p->mName << " Age:" << (*it)->mAge << endl;
        }
    }
    
    
    int main() {
    
        test01();
    
        test02();
    
        system("pause");
    
        return 0;
    }

    3 Vector容器嵌套容器

    学习目标:容器中嵌套容器,我们将所有数据进行遍历输出

    示例:

    //容器嵌套容器
    void test01() {
    
        vector< vector<int> >  v;
    
        vector<int> v1;
        vector<int> v2;
        vector<int> v3;
        vector<int> v4;
    
        for (int i = 0; i < 4; i++) {
            v1.push_back(i + 1);
            v2.push_back(i + 2);
            v3.push_back(i + 3);
            v4.push_back(i + 4);
        }
    
        //将容器元素插入到vector v中
        v.push_back(v1);
        v.push_back(v2);
        v.push_back(v3);
        v.push_back(v4);
    
    
        for (vector<vector<int>>::iterator it = v.begin(); it != v.end(); it++) {
            //此时(*it)就是容器vector<int>
            for (vector<int>::iterator vit = (*it).begin(); vit != (*it).end(); vit++) {
                cout << *vit << " ";
            }
            cout << endl;
        }
    
    }
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }

      

  • 相关阅读:
    07.swoole学习笔记--tcp客户端
    06.swoole学习笔记--异步tcp服务器
    04.swoole学习笔记--webSocket服务器
    bzoj 4516: [Sdoi2016]生成魔咒
    bzoj 3238: [Ahoi2013]差异
    bzoj 4566: [Haoi2016]找相同字符
    bzoj 4199: [Noi2015]品酒大会
    后缀数组之hihocoder 重复旋律1-4
    二分查找
    内置函数--sorted,filter,map
  • 原文地址:https://www.cnblogs.com/anjingdian/p/16186588.html
Copyright © 2020-2023  润新知