c 學習筆記28 常用查詢演算法

2021-10-09 11:41:37 字數 3861 閱讀 3125

今天學習stl常用查詢演算法。

學習目標:

演算法簡介:

1 find

功能描述:

函式原型:

#include

using

namespace std;

#include

#include

#include

void

test01()

//查詢有沒有5這個元素

vector<

int>

::iterator it =

find

(v.begin()

, v.

end(),

5);if

(it == v.

end())

else

}class

person

//過載==

bool

operator==(

const person &p)

else

}int m_age;

string m_name;};

void

test02()

else

}int

main()

總結: 利用find可以在容器中找指定的元素,返回值是迭代器

5.2.2 find_if

功能描述:

函式原型:

#include

using

namespace std;

#include

#include

#include

class

greaterfive};

void

test01()

//查詢有沒有5這個元素

vector<

int>

::iterator it =

find_if

(v.begin()

, v.

end(),

greaterfive()

);if(it == v.

end())

else

}class

person

//過載==

bool

operator==(

const person p)

else

}int m_age;

string m_name;};

class

greater20};

void

test02()

else

}int

main()

總結:find_if按條件查詢使查詢更加靈活,提供的仿函式可以改變不同的策略

3 adjacent_find

功能描述:

函式原型:

#include

#include

void

test01()

else

}

總結:面試題中如果出現查詢相鄰重複元素,記得用stl中的adjacent_find演算法

5.2.4 binary_search

功能描述:

函式原型:

#include

#include

void

test01()

//二分查詢

bool ret =

binary_search

(v.begin()

, v.

end(),

2);if

(ret)

else

}int

main()

**總結:**二分查詢法查詢效率很高,值得注意的是查詢的容器中元素必須的有序序列

5 count

功能描述:

函式原型:

#include

using

namespace std;

#include

#include

#include

void

test01()

v.push_back(2

);v.push_back(8

);v.push_back(4

);v.push_back(2

);v.push_back(2

);v.push_back(8

);v.push_back(4

);v.push_back(2

);int num =

count

(v.begin()

, v.

end(),

2); cout <<

"2的個數為: "

<< num << endl;

}class

person

//過載==

bool

operator==(

const person& p)

else

}int m_age;

string m_name;};

class

greater20};

void

test02()

intmain()

6 count_if

功能描述:

函式原型:

#include

using

namespace std;

#include

#include

#include

class

greatfour};

void

test01()

v.push_back(2

);v.push_back(8

);v.push_back(4

);v.push_back(2

);v.push_back(2

);v.push_back(8

);v.push_back(4

);v.push_back(2

);int num =

count_if

(v.begin()

, v.

end(),

greatfour()

);cout <<

"大於4的個數為: "

<< num << endl;

}class

person

int m_age;

string m_name;};

class

lessage};

void

test02()

intmain()

**總結:**按值統計用count,按條件統計用count_if

啊 可算敲完了。

最近準備去公司實習,但感覺自己什麼都不會 慌慌慌!!!

加油加油!!!

C 常用查詢演算法

find 查詢元素 find if 按條件查詢元素 adjacent find 查詢相鄰重複元素 binary search 二分查詢演算法 count 統計元素個數 count if 按條件統計元素個數 1 find 查詢指定元素,返回找到的指定元素的迭代器,找不到則返回結束迭代器 函式原型 fi...

c 常用查詢演算法

演算法簡介 find 查詢元素 find if 按條件查詢元素 adjacent find 查詢相鄰重複元素 binary search 二分查詢法 count 統計元素個數 count if 按條件統計元素個數 find 功能描述 查詢指定元素,找到返回指定元素的迭代器,找不到返回結束迭代器end...

C 學習筆記28 輸入與輸出

1 與輸入輸出相關的類 1 ifstream istream ios iostream fstream ostream ofstream 2 cin是istream的物件,cout是ostream的物件 3 ifstream 對檔案進行讀操作,ofstream 對檔案進行寫操作 4 fstream ...