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;
    }
  • 相关阅读:
    shell基础优化脚本
    shell的常用脚本一
    Office/Visio/Project 2019 专业版iso
    vs2017 不能加载.vdproj
    CA机构及SSL证书
    singleWsdl和wsdl区别,Axis2和CXF对比
    在Window Server 2016中使用Web Deploy方式发布.NET Web应用
    NPOI导出excel
    audio隐藏下载按钮
    网站崩溃,如果提高网站并发能力
  • 原文地址:https://www.cnblogs.com/wuchanming/p/3952225.html
Copyright © 2011-2022 走看看