Std iterator一些用法

来源:互联网 发布:远程控制软件源代码 编辑:程序博客网 时间:2024/06/08 17:09
#include <string>#include <iostream>#include <boost/tokenizer.hpp>#include <boost/typeof/typeof.hpp>#include <vector>#include <fstream>#include <map>#include <algorithm>#include <iterator>using namespace std;int load(const char* path, map<string, vector<string> > &data) {   ifstream fin(path);   if(!fin) {       return -1;   }   string line = "";   typedef boost::tokenizer< boost::char_separator<char> > tokenizer;   boost::char_separator<char> sep("\t");   for(; getline(fin, line); ) {       tokenizer tok(line, sep);       BOOST_AUTO(it, tok.begin());       string key = *it;       it++;       copy(it, tok.end(), back_inserter(data[key])); //注意名字 不是bakc_iterator, copy(it++, tok.end(), data[key].begin())不行   }   return 0;}int show(map<string, vector<string> > &data) {    for (BOOST_AUTO(it, data.begin()); it != data.end(); ++it) {        cout << it->first << endl;        ostream_iterator<string> osit(cout, "\n"); //输入输出iterator, 可以快速打印        copy(it->second.begin(), it->second.end(), osit);    }    return 0;}int main(int argc, char* argv[]) {    map<string, vector<string> > data;    load(argv[1], data);    for (BOOST_AUTO(it, data.begin()); it != data.end(); ++it) {        cout << it->first << endl;    }    show(data);    return 0;}

0 0
原创粉丝点击