学习C++遇到的问题1:使用istream_iterator、insert_iterator和copy,试图创建map没成功。

学习C++遇到的问题1:使用istream_iterator、insert_iterator和copy,试图创建map没成功。

首先我先尝试创建了一个vector<int>,是成功的。之后,我用按照相同的方法去创建一个map<string, double>, 并重载了pair<string, double>的输入和输出运算符,然而并没有编译通过。

代码如下:

#include <iterator>
#include <vector>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
istream& operator>>(istream& is, pair<string, double>& a) {
    is >> a.first >> a.second;
    return is;
}
ostream &operator<<(ostream& os, pair<string, double>& a) {
    os << a.first << " " << a.second;
    return os;
}
int main() {
    /* from cin to vector<int>*/
/*    vector<int> data;
    copy(istream_iterator<int>(cin), istream_iterator<int>(), insert_iterator<vector<int>>(data, data.begin()));
    copy(data.begin(), data.end(), ostream_iterator<int>(cout, " "));

*/
    /* from cin to map<pair<string, double>> */
    map<string, double> mdata;
    copy(istream_iterator<pair<string, double>>(cin), istream_iterator<pair<string, double>>(), insert_iterator<map<string, double>>(mdata, mdata.begin()));
    copy(mdata.begin(), mdata.end(), ostream_iterator<pair<string, double>>(cout, " "));
    return 0;
}