文字查詢程式c primer12 32

2021-09-17 08:34:52 字數 3585 閱讀 1214

標頭檔案strblob以及strblobptr

//根據題目要求用自己定義的strblob來代替vector來儲存輸入檔案

//可以更加安全的共享底層資料

#include

#include

#include

#include

#include

using

namespace std;

class

strblob

strblob

(initializer_list il)

:data

(make_shared>

(il))~

strblob()

size_type size()

const

bool

empty()

const

void

push_back

(const string &st)

const

void

pop_back()

const

; string &

front()

const

; string &

back()

const

; strblobptr begin()

; strblobptr end()

;private

: shared_ptr> data;

void

check

(size_type t,

const string &msg)

const;}

;//檢查乙個給定的索引值是否在合法範圍內

void strblob::

check

(size_type t,

const string &msg)

const

void strblob::

pop_back()

const

string & strblob::

front()

const

string & strblob::

back()

const

class

strblobptr

strblobptr

(strblob &a, size_t sz =0)

:wptr

(a.data)

,curr

(sz)

~strblobptr()

string &

deref()

const

;//用來解引用

strblobptr&

incr()

;//用來遞增

bool

operator!=(

const strblobptr &x)

private

: size_t curr;

//check要檢查指標指向的vector是否還存在

shared_ptr>

check

(size_t,

const string&

)const

; weak_ptr> wptr;};

shared_ptr> strblobptr::

check

(size_t i,

const string &msg)

const

if(i >= ret-

>

size()

)return ret;

}string & strblobptr::

deref()

const

strblobptr& strblobptr::

incr()

strblobptr strblob::

begin()

strblobptr strblob::

end(

)

標頭檔案textquery以及queryresult

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

"blob.h"

using

namespace std;

class

queryresult

;class

textquery

queryresult query

(const string &s)

const

;//返回乙個查詢結果

private

: map>

> result;

//通過字串來查詢對應的行號

//shared_ptr> data;

strblob data;

//按行儲存輸入的檔案};

class

queryresult

~queryresult()

//以下三個是根據12.33題目要求擴充套件,暫時未用到

set::iterator begin()

const

set::iterator end()

const

strblob get_file()

const

private

: string word;

//shared_ptr> data;

strblob data;

//與textquery共享data資料

shared_ptr> nos;

//儲存與給定單詞關聯的行號};

textquery::

textquery

(ifstream &infile)

:data()

}/*string text;

while (getline(infile, text))

}*/}queryresult textquery::

query

(const string& s)

const

ostream&

print

(ostream &out, queryresult &qr)

return out;

}

主函式

#include

#include

#include

#include

#include

#include

#include

#include

#include

"classtq.h"

using

namespace std;

void

runqueries

(ifstream &infile)

}int

main()

足跡C primer 12 函式過載

main函式不能過載 record lookup const account account是乙個型別 record lookup const phone record lookup const name account acct phone phone record r1 lookup acct ...

C Primer12抽象基類

型別轉換與繼承 我們可以將基類的指標和引用繫結到派生類物件上。當使用基類的引用或指標時,實際上我們並不清楚我們使用的物件到底是基類物件還是派生類物件。靜態型別和動態型別 例如item.net price 它的靜態型別是quote 動態型別則根據傳入的實參來決定。如果傳入的是bulk quote,則動...

C primer 12 類 主建構函式

1 class 預設成員變數private,struct預設是public 2 class screen const 成員函式set中,this的型別是乙個指向const物件的const指標,就是說,指標位址不可以改,內容也不可以改。而非const函式,this指標位址不可以改,但是指向的內容可以改...