Iterator, foreach, generics and callback in Java, C# and Python

java 5 2016-02-29 13:03
女装

It seems like a huge topic, so just divide it into small pieces and conquer them piece by piece, I have drawn a map for this article to guide me finish it instead of being scared by it.

Iterator

Concept of iterator is here in #Wikipedia: Iterator , so I think iterator is just like pointer in C or cursor in database.

why use iterator

Iterator is just an abstract concept and can be implemented in many different ways. But first of all, we should figure out why we need iterator and why it is important for us.

First, just think about a simple for loop in C++:

#include <iostream>
using namespace std;

int main()
{
    for (int i = 0; i < 3; i++)
        cout << i << " ";
    cout << endl;

    system("pause");
    return 0;
}
#include <iostream>
using namespace std;

int main()
{
    int a[] = { 1, 2, 3 };
    for (int i = 0; i < 3; i++)
        cout << a[i] << " ";
    cout << endl;

    system("pause");
    return 0;
}
#include <iostream>
using namespace std;

int main()
{
    int a[] = { 1, 2, 3 };
    for (int i = 0; i < 3; i++)
        cout << *(a+i) << " ";
    cout << endl;

    system("pause");
    return 0;
}
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> a;
    a.push_back(1);
    a.push_back(2);
    a.push_back(3);

    for (vector<int>::iterator i = a.begin(); 
                               i != a.end();
                               i++)
        cout << *i << " ";
    cout << endl;

    system("pause");
    return 0;
}
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> a;
    a.push_back(1);
    a.push_back(2);
    a.push_back(3);

    for (auto i : a)
        cout << i << " ";
    cout << endl;

    system("pause");
    return 0;
}

In C++, if we implement a container of our own, and we want to use for loop or while loop to traverse it like basic data type, we can use iterator by implement

So first let's analysis this example in

C++ version

Python version

Java version

C# version

女装
文章评论