<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    equal_range用法

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接 equal_range是C++ STL中的一種二分查找的算法,試圖在已排序的[first,last)中尋找value,它返回一對迭代器i和j,其中i是在不破壞次序的前提下,value可插入的第一個位置(亦即lower_bound),j則是在不破壞次序的前提下,value可插入的最后一個位置(亦即upper_bound),因此,[i,j)內的每個元素都等同于value,而且[i,j)是[first,last)之中符合此一性質的最大子區間    如果以稍許不同的角度來思考equal_range,我們可把它想成是[first,last)內"與value等同"之所有元素形成的區間A,由于[fist,last)有序(sorted),所以我們知道"與value等同"之所有元素一定都相鄰,于是,算法lower_bound返回區間A的第一個迭代器算法upper_bound返回區間A的最后一個元素的下一個位置算法equal_range則是以pair的形式將兩者都返回    即使[fist,last)并未含有"與value等同"之任何元素,以上敘述仍然合理,這種情況下,"與value等同"之所有元素形成的,其實是一個空區間,在不破壞次序的情況下,只有一個位置可以插入value,而equal_range所返回的pair,其第一和第二(都是迭代器)皆指向該位置。
    1. // map::equal_elements
    2. #include <iostream>
    3. #include <map>
    4. using namespace std;

    5. int main ()
    6. {
    7.   map<char,int> mymap;
    8.   pair<map<char,int>::iterator,map<char,int>::iterator> ret;

    9.   mymap['a']=10;
    10.   mymap['b']=20;
    11.   mymap['c']=30;

    12.   ret = mymap.equal_range('b');

    13.   cout << "lower bound points to: ";
    14.   cout << ret.first->first << " => " << ret.first->second << endl;

    15.   cout << "upper bound points to: ";
    16.   cout << ret.second->first << " => " << ret.second->second << endl;

    17.   return 0;
    18. }
    運行結果:
    1. lower bound points to: 'b' => 20
    2. upper bound points to: 'c' => 30

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全