学习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;
}