zoukankan      html  css  js  c++  java
  • 使用tuple返回多个值

    17.4编写并测试findbook函数

    #include<iostream>
    #include<vector>
    #include<string>
    #include<tuple>
    #include<algorithm>
    #include"Sales_data.h"
    using namespace std;
    typedef tuple<vector<Sales_data>::size_type,vector<Sales_data>::const_iterator,vector<Sales_data>::const_iterator> matches;
    
    vector<matches> findbook(const vector<vector<Sales_data>> &files,const string &book)
    {
        vector<matches> ret;
        for(auto it=files.begin();it!=files.end();++it)
        {
            auto found=equal_range(it->begin(),it->end(),book,compareIsbn);
            if(found.first!=found.second)
                ret.push_back(make_tuple(it-files.begin(),found.first,found.second));
        }
        return ret;
    }
    
    void reportResult(istream &in,ostream &os,const vector<vector<Sales_data>> &files)
    {
        string s;
        while(in>>s)
        {
            auto trans=findbook(files,s);
            if(trans.empty())
            {
                cout<<s<<" not found in any stores "<<endl;
                continue;
            }
            for(const auto &store:trans)
            {
                os<<"stores "<<get<0>(store)<<" sales: "
                    <<accumulate(get<1>(store),get<2>(store),Sales_data(s))
                    <<endl;
            }
        }
    }
    
    int main()
    {
    
    }

    17.5重写findbook,令其返回一个pair,包含一个索引和一个迭代器pair。

    typedef pair<vector<Sales_data>::size_type,pair<vector<Sales_data>::const_iterator,vector<Sales_data>::const_iterator>> match;
    vector<match> findbook1(const vector<vector<Sales_data>> &files,const string &book)
    {
        vector<match> ret;
        for(auto it=files.begin();it!=files.end();++it)
        {
            auto found=equal_range(it->begin(),it->end(),book,compareIsbn);
            if(found.first!=found.second)
                ret.push_back(make_pair(it-files.begin(),make_pair(found.first,found.second)));
        }
        return ret;
    }
  • 相关阅读:
    .Net vs Java?
    使用HyperV安装Linux系统
    C#调用Lua
    KubernetesService介绍服务发现
    缓存雪崩、缓存击穿和缓存穿透
    10 个开源项目
    minikube cncf.io
    Parallel的使用
    通过Rancher Desktop在桌面上运行K8s
    2021 .NET 开发者峰会顺利在网上落幕,线上直播回看汇总
  • 原文地址:https://www.cnblogs.com/wuchanming/p/3952225.html
Copyright © 2011-2022 走看看