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

c++自帶的查找函數(shù)詳解

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

一、binary_search

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

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

可以看到,下面的numList2沒有排好序,導(dǎo)致三個(gè)函數(shù)的返回值都是錯(cuò)誤的。 

#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
    //返回值為物理地址,因此要獲得對(duì)應(yīng)的邏輯地址,需要減去數(shù)組的起始位置。
	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

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

數(shù)組的find

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

字符串的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');
	//返回的是下標(biāo)的值而不是上面的指針或是迭代器

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

您可能感興趣的文章:

相關(guān)文章

  • 詳解次小生成樹以及相關(guān)的C++求解方法

    詳解次小生成樹以及相關(guān)的C++求解方法

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

    C++?Boost?Spirit精通教程

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C++代碼實(shí)現(xiàn)雙向鏈表

    C++代碼實(shí)現(xiàn)雙向鏈表

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

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

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

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

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

    Qt實(shí)現(xiàn)自定義驗(yàn)證碼輸入框控件的方法

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

    C語言實(shí)現(xiàn)學(xué)生管理系統(tǒng)的源碼分享

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

    C語言實(shí)現(xiàn)英文文本詞頻統(tǒng)計(jì)

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

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

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

    C語言數(shù)組超詳細(xì)講解上

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

最新評(píng)論