C STL 常用查詢演算法

2021-10-05 14:24:41 字數 3105 閱讀 5171

//find 查詢元素,內建型別

void

test01()

;//查詢在區間內出現的第乙個5,返回當前查詢元素迭代器

vector<

int>

::iterator it =

find

(v.begin()

, v.

end(),

5);if

(it != v.

end())

else

}//find 查詢元素,自定義型別,得告訴編譯器如何做對比

class

person

bool

operator==(

const person &p)

else

} string m_name;

int m_age;};

void

test02()

else

}//find_if 按條件查詢-----------------------------------------------

//find_if 查詢元素,內建型別

class

greaterfive};

void

test03()

;//查詢在區間內出現的第乙個5,返回當前查詢元素迭代器

vector<

int>

::iterator it =

find_if

(v.begin()

, v.

end(),

greaterfive()

);if(it != v.

end())

cout << endl;

}else

}//find_if 自定義資料型別

//一元謂詞

class

greaterage};

void

test04()

else

}//adjacent_find 查詢相鄰重複元素

void

test05()

;int count =0;

while(1

)else

} cout <<

"已刪除:"

<< count <<

"個相鄰的重複元素"

<< endl;

for(

auto i : v)

cout << endl;

}//binary_search 查詢指定元素是否存在,存在返回true,不存在返回false

//在無序序列中不可用,二分查詢法

void

test06()

;if(binary_search

(v.begin()

, v.

end(),

6))else

}//count 統計元素個數

void

test07()

;int num1 =

count

(v.begin()

, v.

end(),

2); cout <<

"內建型別的個數為:"

<< num1 << endl;

//需過載==運算子

vectorp;

person p1

("王大錘",18

);person p4

("王大錘",18

);person p2

("喵喵喵",20

);person p3

("嚶嚶嚶",19

);p.push_back

(p1)

; p.

push_back

(p2)

; p.

push_back

(p3)

; p.

push_back

(p4)

; person p5

("王大錘",18

);int num2 =

count

(p.begin()

, p.

end(

), p5)

; cout <<

"自定資料型別:"

<< num2 << endl;

}//count_if 按條件統計元素個數

class

greattwo};

void

test08()

;int num =

count_if

(v.begin()

, v.

end(),

greattwo()

);cout <<

"大於2的數有:"

<< num <<

"個"<< endl;

//需呼叫一元謂詞

vectorp;

person p1

("王大錘",18

);person p2

("喵喵喵",20

);person p3

("嚶嚶嚶",19

);person p4

("王小錘",21

);p.push_back

(p1)

; p.

push_back

(p2)

; p.

push_back

(p3)

; p.

push_back

(p4)

;int num2 =

count_if

(p.begin()

, p.

end(),

greaterage()

);cout <<

"自定資料型別:"

<< num2 << endl;

}int

main()

C STL的查詢演算法

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

C STL 常用排序演算法

以下是排序和通用演算法 提供元素排序策略 merge 合併兩個有序序列,存放到另乙個序列。例如 vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元素 vecintc.resize 9 擴大容量 m...

C STL常用演算法總結

演算法 問題的求解步驟,以有限的步驟,解決數學或邏輯中的問題。accumulate 元素統計 template t accumulate inputiterator first,inputiterator last,t init template t accumulate inputiterator...