zoukankan      html  css  js  c++  java
  • 关联容器(map):支持高效查找的容器,一种键值对的集合。

    #include <iostream>
    #include <string>
    #include <map>
    #include <vector>
    
    using namespace std;
    
    
    //根据空格等将字符串,拆分成多个单词。
    vector<string> split(const string& s)
    {
        vector<string> ret;
        typedef string::size_type string_size;
        string_size i=0;
    
        while(i!=s.size())
        {
            while(i!=s.size() && isspace(s[i]))
            {
                ++i;
            }
            string_size j=i;
            while(j!=s.size() && !isspace(s[j]))
            {
                ++j;
            }
            if(i!=j)
            {
                ret.push_back(s.substr(i,j-i));
                i=j;
            }        
        }
        return ret;
    }
    
    //得到一个单词为键,所在行的序列为值的一个关联容器集合
    map<string,vector<int> > xref(istream & in,vector<string> find_words(const string&)=split)
    {
        string line;
        int line_number=0;
    
        map<string,vector<int> > ret;
    
        while(getline(in,line)) //读取分隔每一行的输入
        {
            ++line_number;
            vector<string> words=find_words(line);//找每一行单词的集合。
    
            for(vector<string>::const_iterator it=words.begin();it!=words.end();++it)
            {
                ret[*it].push_back(line_number); //*it:一个单词
            }
        }
        return ret;
    }
    
    int main()
    {
       map<string ,vector<int> > ret=xref(cin);
       for(map<string,vector<int> >::const_iterator it=ret.begin();it!=ret.end();++it)
       {
           cout<<it->first <<"在行:";    //输出一个单词
           vector<int>::const_iterator line_it=it->second.begin();
           cout<<*line_it;
    
           ++line_it;
           while(line_it!=it->second.end())
           {
               cout<<","<<*line_it;
               ++line_it;
           }
           cout<<endl;
       }
       return 0;
    } 
  • 相关阅读:
    linux 端口号、进程id、杀进程、查询tcp的连接(各种状态的)
    泛型---(静态方法中为什么不能引用类级别的参数)
    net.sf.json------json解析
    微信调用40001
    第十五章 泛型
    CentOS7下安装Nodejs
    CentOS7下安装RabbitMQ
    Centos7搭建FTP服务器
    Windows10下mysql-5.7.19免安装版配置
    Windows下dubbo环境搭建及初步使用
  • 原文地址:https://www.cnblogs.com/hometown/p/3370572.html
Copyright © 2011-2022 走看看