学习:容器算法迭代器

半腔热情 提交于 2019-11-28 11:42:43

vector存放内置数据类型:

容器: vector

算法: for_each

迭代器: vector::iterator

示例代码:

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>

using namespace std;

//第三种方法需要的函数
void toprint(int val) {
    cout << val << endl;
//其实我们可以看下for_each的定义中实现的
    //for (; _UFirst != _ULast; ++_UFirst)
    //{
    //  _Func(*_UFirst); 把传入的函数进行了调用,func传入的是*
    //}
}

void test01() {
    vector<int> v; //创建一个int类型的vector容器

    v.push_back(10); //放入相应的数值
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);


    //第一种方式进行遍历容器中的数值

    //vector<int>::iterator 拿到vector<int>这种容器的迭代器类型
    //vector<int>::iterator pBegin = v.begin(); //v.begin()返回迭代器,这个迭代器指向容器中第一个数据
    //vector<int>::iterator pEnd = v.end(); //v.end()返回迭代器,这个迭代器指向容器元素的最后一个元素的下一个位置
    //while (pBegin != pEnd) {
    //  cout << *pBegin << endl;
    //  pBegin++;
    //}

    //第二种方式进行遍历容器中的数值
    //for (vector<int>::iterator pBegin = v.begin(); pBegin < v.end(); pBegin++) {
    //  cout << *pBegin << endl;
    //}

    //第三种方式进行遍历容器中的数值

    //该函数的定义_Fn for_each(_InIt _First, _InIt _Last, _Fn _Func)
    for_each(v.begin(), v.end(), toprint);
}

int main() {

    test01();

    system("pause");
    return 0;
}

vector存放自定义数据类型:

示例代码如下:

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>

using namespace std;

class Person {
public:
    Person(int age,string name) {
        this->m_Age = age;
        this->m_Name = name;
    }

public:
    int m_Age;
    string m_Name;
};

//void test01() {
//  vector<Person> v;
//  Person p1(18, "aaa");
//  Person p2(28, "bbb");
//  Person p3(28, "bbb");
//  Person p4(28, "bbb");
//  Person p5(28, "bbb");
//  v.push_back(p1);
//  v.push_back(p2);
//  v.push_back(p3);
//  v.push_back(p4);
//  v.push_back(p5);
//
//  for (vector<Person>::iterator begin = v.begin(); begin < v.end(); begin++) {
//      cout << (*begin).m_Name << " " << (*begin).m_Age << endl;
//  }
//}

void test02() {
    vector<Person*> v;
    Person p1(18, "aaa");
    Person p2(28, "bbb");
    Person p3(28, "ccc");
    Person p4(28, "ddd");
    Person p5(28, "eee");
    v.push_back(&p1);
    v.push_back(&p2);
    v.push_back(&p3);
    v.push_back(&p4);
    v.push_back(&p5);

    for (vector<Person*>::iterator begin = v.begin(); begin < v.end(); begin++) { //这里创建的迭代器我们目前都可以认为是指针,然后这里创建了存储指针类型
        cout << (*begin)->m_Name << " " << (*begin)->m_Age << endl;  // 我们首先解引用得到存储Person对象的指针,然后进行->访问
    }
}

int main() {
    //test01();
    test02();
    system("pause");
    return 0;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!