STL 1 查詢函式find的使用

2022-01-28 22:22:55 字數 2187 閱讀 2846

使用list, vector 等這些標準庫的類,查詢是比較常用的功能,但是這些類沒有提供find函式,因為對於自定義型別,它不知道如何去比較兩個型別。

但是stl提供了一種通用的查詢函式find(iterator it0,iterator it1,target),下面介紹如何使用這個查詢函式。

//定義乙個簡單的資料結構inst.

class

inst

// 之前這裡有個分號,並不應該出現的,謝謝提醒

string

name()

const

intvalue()

const

private

:string

name;

intvalue;

};//

定義比較函式,過載==運算子。

//name 和 value 都一樣, 則 例項一樣

bool

operator==(

const

inst

&a,

const

inst &b)

//name 一樣, 則 例項一樣

bool

operator==(

const

inst

&a,

const

string

name)

測試如下,

list

<

inst

>

elist;

inst p1(

"abc",

3);inst p2(

"abcdef",

6);list

<

inst

>

::iterator it;

//find 需要包含標頭檔案

it =

std::find(elist.begin(),elist.end(),p2);

if(it

!=elist.end())

cout

<<(*

it).value()

<<

endl;

string

name ="

abc"

;it

=std::find(elist.begin(),elist.end(),name);

if(it

!=elist.end())

cout

<<(*

it).value()

<<

endl;

但是如果list儲存指標,如下,

list

<

inst

*>

elist;

inst

*p1

=new

inst(

"abc",

3);inst

*p2

=new inst(

"abcdef",

6);list

<

inst

*>

::iterator it;

it =

std::find(elist.begin(),elist.end(),p2);

if(it

!=elist.end())

cout

<<(*

it)->

value()

<<

endl;

string

name ="

abc"

;it

=std::find(elist.begin(),elist.end(),name);

if(it

!=elist.end())

cout

<<(*

it)->

value()

<<

endl;

那麼比較函式就需要做一些修改,如下,

bool

operator==(

const

inst*a,

const

inst*b)

bool

operator==(

const

inst

*a,

const

string

nm)在學習stl過程中,如果有錯誤的地方,還請各位指正,謝謝!

演算法中的STL(1)

2022.03.14 為了準備藍橋杯最近學習了演算法中的部分知識,今天學習了c 中的stl模板庫。今天學習的內容有vector容器,其中常用的函式有 push back 在容器的末尾新增乙個資料 pop back 彈出容器中乙個資料 size 返回容器的大小 clear 清空容器 insert 在指...

(string C )(三 查詢)find的使用

1.返回str在字串中第一次出現的位置 從index開始查詢,如果沒找到則返回string npos 函式原型 size type find const basic string str,size type index size type find const char str,size type ...

matlab中find函式的使用

語法 1.ind find x 2.ind find x,k 3.ind find x,k,first 4.ind find x,k,last 5.row,col find x,6.row,col,v find x,說明 1.ind find x 找出矩陣x中的所有非零元素,並將這些元素的線性索引值...