C++中运用输入流迭代器进行奇偶排序相关问题

代码如下

#include <iostream>
#include <iterator>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;

//先按照从大到小输出奇数,再从小到大输出偶数。
int main()
{
    istream_iterator<int> i1(cin), i2;
    vector<int> s1(i1, i2);
    sort(s1.begin(), s1.end());
    deque<int> s2;
    for (vector<int>::iterator iter = s1.begin(); iter != s1.end(); ++iter){
        if (*iter % 2 == 0){
            s2.push_back(*iter);//偶数放在s2尾部
        }
        else
        {   s2.push_front(*iter);}//奇数放在s2首部
    }
    // 输出s2
    copy(s2.begin(), s2.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
    return 0;
}

想请教一下为什么定义迭代器时候要用两个迭代器来组成vector。

s1.begin()是vector的头
s1.end()是vector的最后一个元素的下一个节点
begin()和end()这两个迭代器,并不是你理解的用两个迭代器来组成vector,只是为了便于遍历vector而定义的两个指针。

他想问的应该是为什么在构造vector时传入两个迭代器参数。同问。。