(1):tuple的定义;tuple模板可以视为一种快速随意的数据结构.
例子1:定义几个tuple;
tuple<int,int,int> a(10,20,30);
tuple<string, vector<string>, pair<string, int>> s;
例子2:编写一个findbook函数和reportresult函数,可以在许多书店的销售记录中查找到指定的书籍记录.并保存每一个存有指定书籍的书店的信息;
#include "sales.h"
#include "iostream"
#include "algorithm"
#include "vector"
#include "numeric"
#include "tuple"
using namespace std;
typedef tuple<size_t, 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;
size_t count = 0;
for (const auto& trans : files)
{
++count;
auto found = equal_range(trans.begin(), trans.end(), book, compareIsbn);
if (found.first != found.second)
ret.push_back(matches(count, found.first, found.second));
}
return ret;
}
void report_result(istream&in,ostream&os,const vector<vector<Sales_data>>& files)
{
string book;
while (in>>book)
{
auto ret = findbook(files, book);
if (ret.empty())
{
os << " nodata\n";
continue;
}
for (const auto &trans : ret)
os << "index : " <<"total revenues "<< get<0>(trans) << accumulate(get<1>(trans), get<2>(trans), Sales_data(book));
}
}