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;
    }
  • 相关阅读:
    L1-049 天梯赛座位分配​​​​​​​
    L1-046 整除光棍 大数除法
    天梯赛 L1-043 阅览室
    Hdu 1022 Train Problem I 栈
    蓝桥杯 历届试题 格子刷油漆  (动态规划)
    第九届蓝桥杯省赛真题 日志统计
    2018年第九届蓝桥杯第7题 螺旋折线
    2018年第九届蓝桥杯省赛 递增三元组
    蓝桥杯 历届试题 高僧斗法  (尼姆博弈)
    K-th Number
  • 原文地址:https://www.cnblogs.com/wuchanming/p/3952225.html
Copyright © 2011-2022 走看看