C STL 遍歷 查詢演算法學習

2021-09-29 16:35:50 字數 2798 閱讀 8370

一.遍歷演算法

1.for_each

//普通函式

void

print01

(int val)

//仿函式

class

print02};

void

test01()

for_each

(v.begin()

, v.

end(

), print01)

; cout << endl;

for_each

(v.begin()

, v.

end(),

print02()

);}int

main()

2.transform

class

transform};

class

myprint};

void

test01()

vector<

int>vtarget;

//目標容器

vtarget.

resize

(v.size()

);//目標容器需要提前開闢空間

transform

(v.begin()

, v.

end(

), vtarget.

begin()

,transform()

);for_each

(vtarget.

begin()

, vtarget.

end(),

myprint()

);cout << endl;

}

二.查詢演算法

1.find

find可以在容器中找指定的元素,它的返回值是迭代器

class

person

//過載==

bool

operator==(

const person &p)

else

} string m_name;

int m_age;};

void

test01()

cout << endl;

//查詢是否有5這個元素

vector<

int>

::iterator it=

find

(v.begin()

, v.

end(),

5);if

(it == v.

end())

else

}void

test02()

else

}int

main()

2.find_if

class

greaterfive};

class

person

string m_name;

int m_age;};

class

greater20};

void

test01()

cout << endl;

//查詢是否有5這個元素

vector<

int>

::iterator it=

find_if

(v.begin()

, v.

end(),

greaterfive()

);if(it == v.

end())

else

}void

test02()

else

}int

main()

3.adjacent_find:查詢相鄰重複元素

void

test01()

else

}int

main()

4.binary_search

查詢指定元素是否存在,注意:必須是有序序列,否則查詢結果未知。

void

test01()

bool ret =

binary_search

(v.begin()

, v.

end(),

9);if

(ret)

else

}

5.count

統計元素個數

class

person

bool

operator==(

const person &p)

else

} string m_name;

int m_age;};

void

test01()

void

test02()

intmain()

6.count_if

按條件統計元素個數

class

greaterfive};

class

person

string m_name;

int m_age;};

class

greater20};

void

test01()

void

test02()

intmain()

演算法學習 之查詢

順序查詢 假設靜態查詢表的順序儲存結構為 typedef struct sstable int search seq sstable st,keytype key search seq 比較無監視哨的查詢演算法 int location sstable st elemtype e location ...

C STL的查詢演算法

假設你有乙個序列容器,或者有一對迭代器標識了乙個區間,現在你希望在容器中查詢一些資訊,這樣的查詢工作如何進行呢?你的選擇往往是 count,count if,find,find if,binary search,lower bound,upper bound,equal range.該如何選擇呢?現...

C STL 常用查詢演算法

find 查詢元素,內建型別 void test01 查詢在區間內出現的第乙個5,返回當前查詢元素迭代器 vector int iterator it find v.begin v.end 5 if it v.end else find 查詢元素,自定義型別,得告訴編譯器如何做對比 class pe...