zoukankan      html  css  js  c++  java
  • operator[] 重载

    #include <iostream>
    #include <vector>
    #include <string>

    class Assoc {
        struct Pair {
            std::string name;
            double val;
            Pair(std::string n="", double v=0) :name(n), val(v) {}
        };
        std::vector<Pair> vec;

        Assoc(const Assoc&);
        Assoc& operator=(const Assoc&);
    public:
        Assoc() {}
        const double& operator[] (const std::string&);
        double& operator[] (std::string&);
        void print_all() const;
    };

    double& Assoc::operator[] (std::string& s) {
        for(std::vector<Pair>::iterator p=vec.begin();p!=vec.end();++p) {
            if (s == p->name)
                return p->val;
        }
        vec.push_back(Pair(s,0));
        return vec.back().val;
    }

    void Assoc::print_all() const {
        for(std::vector<Pair>::const_iterator p=vec.begin();p!=vec.end();++p) {
            std::cout<<p->name<<": "<<p->val<<std::endl;
        }
    }

    int main() {
        std::string buf;
        Assoc vec;
        while(std::cin>>buf && buf!="end")
            vec[buf]++;
        vec.print_all();

        return 0;
    }

  • 相关阅读:
    慕课前端入门-HTML5属性变化
    黑马jQuery教程4
    黑马jQuery教程3
    黑马JQuery教程2
    2017-03-15
    按钮图标化
    AES MFC实现
    CButtonST类简介使用方法
    VS资源编辑器常见错误RC1000到RC1208
    MFC单文档程序添加HTML帮助支持
  • 原文地址:https://www.cnblogs.com/donggongdechen/p/9720778.html
Copyright © 2011-2022 走看看