vector<int> v1;
    const vector<int> v2;
    //auto it1 = v1.begin(), it2 = v2.begin();
    // it1 and it2 have different type, thus need be seperated into two statements.
    auto it1 = v1.begin();
    // the type of `it1` is `vector<int>::iterator`
    auto it2 = v2.begin();
    // the type of `it2` is `vector<int>::const_iterator`
    auto it3 = v1.cbegin(), it4 = v2.cbegin();
    // the type of `it3` and `it4` is `vector<int>::const_iterator`