17.1
tuple<int, int, int> ti(10,, 20, 30);
17.2
tuple<string, vector<string>, pair<string, int>> t;
17.3 使用tuple实现:
#ifndef TEXTQUERY_H
#define TEXTQUERY_H
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <memory>
#include <map>
#include <set>
#include <string>
#include <tuple>
using namespace std;
typedef vector<string>::size_type line_no;
typedef tuple<string, shared_ptr<set<line_no>>, shared_ptr<vector<string>>> QueryResult;
ostream &print(ostream &os, const QueryResult &qr);
class TextQuery {
public:
TextQuery(ifstream&);
QueryResult query(const string&) const;
private:
shared_ptr<vector<string>> file;
map<string, shared_ptr<set<line_no>>> wm;
};
TextQuery::TextQuery(ifstream &infile): file(make_shared<vector<string>>())
{
string line;
string word;
line_no index = 0;
while (getline(infile, line)) {
file->push_back(line);
++index;
istringstream strline(line);
while (strline >> word) {