欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++自帶的查找函數詳解

 更新時間:2023年09月08日 10:41:18   投稿:mrr  
這篇文章主要介紹了c++自帶的查找函數,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、binary_search

使用binary_search查找必須是排好序的才行。使用下面三個函數都需要先排一遍序

//這三個函數都有三個參數:分別為數組的起始位置、數組的終止位置(取不到)以及要查找的目標值,
lower_bound():返回大于或等于目標值的第一個位置
upper_bound():返回大于目標值的第一個位置
//返回值為物理地址,因此要獲得對應的邏輯地址,需要減去數組的起始位置。
binary_search():若目標值存在則返回true,否則返回false

可以看到,下面的numList2沒有排好序,導致三個函數的返回值都是錯誤的。 

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
	/*排好序的*/
	int numList1[5] = { 1,2,3,4,5 };
	int n1 = 2;
	/*亂序的*/
	int numList2[5] = { 1,3,2,4,5 };
	int n2 = 2;
	cout << binary_search(numList1, numList1 + 5, n1) << endl;  //true
	cout << binary_search(numList2, numList2 + 5, n1) << endl;  //false
    //返回值為物理地址,因此要獲得對應的邏輯地址,需要減去數組的起始位置。
	cout << lower_bound(numList1, numList1 + 5, n1)- numList1 << endl;  //1
	cout << upper_bound(numList1, numList1 + 5, n1)- numList1 << endl;  //2
	cout << lower_bound(numList2, numList2 + 5, n1)- numList2<< endl;  //1
	cout << upper_bound(numList2, numList2 + 5, n1) - numList2 << endl;  //3
}

二、find

即便不排序也可以正常用。

數組的find

/*亂序的*/
	int numList2[5] = { 1,3,2,4,5 };
	int n2 = 2;
	int* pos = find(numList2, numList2 + 5, 2); //若找到,則返回物理地址,需要減去首地址以獲得下標
	if (pos == (numList2 + 5)) {
		cout << "Couldn't find it";
	}
	else
		cout << pos - numList2; //返回下標

字符串的find 

    string str = "abcd";
	if (find(str.begin(), str.end(), 'a') != str.end())
	//使用迭代器
		cout << "Find it!";
	else
		cout << "Couldn't find it!";
// 或者
    string str = "abcd";
	cout << str.find('a');
	//返回的是下標的值而不是上面的指針或是迭代器

到此這篇關于c++自帶的查找函數的文章就介紹到這了,更多相關c++查找函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • 詳解次小生成樹以及相關的C++求解方法

    詳解次小生成樹以及相關的C++求解方法

    這篇文章主要介紹了詳解次小生成樹以及相關的C++求解方法,文中的練習示例采用了kruskal算法通過C++進行求解,需要的朋友可以參考下
    2015-08-08
  • C++?Boost?Spirit精通教程

    C++?Boost?Spirit精通教程

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C++代碼實現雙向鏈表

    C++代碼實現雙向鏈表

    這篇文章主要為大家詳細介紹了C++代碼實現雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 虛函數表-C++多態(tài)的實現原理解析

    虛函數表-C++多態(tài)的實現原理解析

    這篇文章主要介紹了虛函數表-C++多態(tài)的實現原理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • C++11 std::shared_ptr總結與使用示例代碼詳解

    C++11 std::shared_ptr總結與使用示例代碼詳解

    這篇文章主要介紹了C++11 std::shared_ptr總結與使用,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Qt實現自定義驗證碼輸入框控件的方法

    Qt實現自定義驗證碼輸入框控件的方法

    本文主要介紹了Qt實現自定義驗證碼輸入框控件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • C語言實現學生管理系統(tǒng)的源碼分享

    C語言實現學生管理系統(tǒng)的源碼分享

    這篇文章主要為大家詳細介紹了如何利用C語言實現學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C語言實現英文文本詞頻統(tǒng)計

    C語言實現英文文本詞頻統(tǒng)計

    這篇文章主要為大家詳細介紹了C語言實現英文文本詞頻統(tǒng)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++使用string的大數快速模冪運算(6)

    C++使用string的大數快速模冪運算(6)

    這篇文章主要為大家詳細介紹了C++使用string的大數快速模冪運算,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C語言數組超詳細講解上

    C語言數組超詳細講解上

    數組是一組有序的數據的集合,數組中元素類型相同,由數組名和下標唯一地確定,數組中數據不僅數據類型相同,而且在計算機內存里連續(xù)存放,地址編號最低的存儲單元存放數組的起始元素,地址編號最高的存儲單元存放數組的最后一個元素
    2022-04-04

最新評論