zoukankan      html  css  js  c++  java
  • map 学习笔记

    1.map 常用功能

    /****************************************
    * File Name: map.cpp
    * Author: sky0917
    * Created Time: 2014年06月 4日 15:49:14
    ****************************************/
    #include <map>
    #include <cmath>
    #include <queue>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int main(){
        /*
         * map::insert 的使用
         */
        map<string, int> word_count;
    
        word_count.insert(map<string, int>::value_type("zhouzhou",1));
        cout<<word_count["zhouzhou"]<<endl;
    
        pair<string, int> p("zz",2);
        word_count.insert(p);
        cout<<word_count["zz"]<<endl;
    
        word_count.insert(make_pair("zz", 1));    
    
        cout<<p.first<<" "<<p.second<<endl;
        word_count["ww"] = 0;
        
        pair<map<string, int>::iterator, bool> res = word_count.insert(make_pair("zz",8));
        cout<<++res.first->second<<endl;
        
        word_count["tt"] = 7;
        cout<<"start"<<endl;
        for (map<string, int>::iterator it = word_count.begin(); it != word_count.end(); ++it){
            cout<<(*it).first<<" "<<(*it).second<<endl;
        }
        cout<<"end"<<endl;
        cout<<"size = " << word_count.size()<<"----"<<endl;
        /* 
         * 查找并读取 map 中的元素 
         */    
            
        int tmp = word_count["sss"];
        tmp = word_count["2sdf"];    // 这种查找方式的缺点在于如果该元素不存在,则会插入一个具有该键值的新元素
        word_count["zz"] = 9;
        if (word_count.count("zz")){
            int cont = word_count["zz"];
        }
        map<string, int>::iterator iot = word_count.find("zz");    
        
        
        if (iot != word_count.end())
            cout<<(*iot).first<<" "<<(*iot).second<<endl;
        
        /*
         * 从 map 中删除元素
         */    
        word_count["bbz"] = 44;
        cout<<word_count["bbz"]<<" "<<endl;
        cout<<"size = "<< word_count.size()<<endl;
        word_count.erase("bbz");    
        cout<<"size = "<< word_count.size()<<endl;
        
        return 0;
    }

    2. map 示例:

    /****************************************
    * File Name: map_test.cpp
    * Author: sky0917
    * Created Time: 2014年06月 4日 17:27:34
    ****************************************/
    #include <map>
    #include <cmath>
    #include <queue>
    #include <cstdio>
    #include <cstring>
    #include <fstream>
    #include <sstream>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    ifstream& open_file(ifstream &in, const string &file)
    {
        in.close(); // colse in case it was already open
        in.clear(); // clear any existing errors
        // if open fails, the stream will be in an invalid state
        in.open(file.c_str());  // open
        return in;
    }    
    int main(int argc, char **argv){
        map<string, string> trm;
        string key , value;
        if (argc != 3){
            puts("wrong number of arguments");    
            exit(0);
        }
        ifstream mfile;
        if (!open_file(mfile, argv[1])){
            puts("cann't open the first file");
            exit(0);
        }
        while (mfile >> key >> value){
            cout<<"key = " << key <<"value = "<<value<<endl;
            trm.insert(make_pair(key, value));
        }
    
        ifstream input;
        if (!open_file(input, argv[2])){
            puts("cann't open the last file");
            exit(0);
        }
        string line;
        while (getline(input, line)){
            istringstream stream(line); // read the line a word at a time
            string word;
            bool firstword = true;
            while (stream >> word){
                map<string, string>::const_iterator it = trm.find(word);
                if (it != trm.end())
                    word = it->second;
                if (firstword)
                    firstword = false;
                else 
                    cout<<" ";
                cout<<word;
            }    
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Django admin修改密码
    Python中查看函数相关文档
    Python之False和None
    前端神器之jquery
    网页三剑客之JS
    Python常用模块-时间模块
    python静态方法和类方法
    数据库学习之MySQL基础
    lmbench的使用方法
    sd卡无法启动及zc706更改主频后可以进入uboot无法启动kernel的坑
  • 原文地址:https://www.cnblogs.com/sky0917/p/3768482.html
Copyright © 2011-2022 走看看