C++ 基礎(chǔ)教程

C++ 流程控制

C++ 函數(shù)

C++ 數(shù)組 & 字符串

C++ 數(shù)據(jù)結(jié)構(gòu)

C++ 類(lèi) & 對(duì)象

C++ 指針

C++ 繼承

C++ STL 教程

C++ 參考手冊(cè)

C++ set value_comp() 使用方法及示例

C++ STL Set(集合)

C ++ set value_comp()函數(shù)的作用是:返回一個(gè)比較對(duì)象。這個(gè)函數(shù)用于比較兩個(gè)元素,以檢查第一個(gè)元素的鍵是否在第二個(gè)元素之前。用來(lái)比較value大小。

例如:-對(duì)于集合m,如果兩個(gè)元素e1(k1,d1)和e2(k2,d2)是value_type類(lèi)型的對(duì)象,其中k1和k2是其key_type類(lèi)型的鍵,而d1和d2是其data類(lèi)型的數(shù)據(jù)value_type,則m value_comp(e1,e2)等效于m key_comp(k1,k2)。

語(yǔ)法

value_compare value_comp() const;

注意:存儲(chǔ)的對(duì)象定義了成員函數(shù):

bool-operator (value_type &left, value_type &right);

如果按排序順序,left的值在前面且不等于right的值,則返回true。

參數(shù)

沒(méi)有

返回值

它返回一個(gè)值比較函數(shù)對(duì)象。

復(fù)雜

不變。

迭代器有效性

沒(méi)有變化。

數(shù)據(jù)爭(zhēng)用

容器被訪問(wèn)。

沒(méi)有包含元素的訪問(wèn):同時(shí)訪問(wèn)集合的元素是安全的。

異常安全

如果引發(fā)異常,則容器中沒(méi)有任何更改。

實(shí)例1

讓我們看一下比較元素值的簡(jiǎn)單示例:

#include <iostream>
#include <set>

using namespace std;

int main()
{
  set<int> c;
  set<int>::value_compare comp = c.value_comp();

  cout << "比較2和5(1為真,0為假): "<<comp(2, 5) << endl;
  cout << "比較8和5(1為真,0為假): "<<comp(8, 5) << endl;
}

輸出:

比較2和5(1為真,0為假): 1
比較8和5(1為真,0為假): 0

在上面的示例中,因?yàn)?小于5,所以comp(2,5)返回true;由于8不小于5,comp(8,5)返回false。

實(shí)例2

讓我們看一個(gè)簡(jiǎn)單的實(shí)例:

#include <iostream>
#include <set>

using namespace std;

int main ()
{
  set<int> myset;

  set<int>::value_compare mycomp = myset.value_comp();

  for (int i=0; i<=5; i++) myset.insert(i);

  cout << "myset 包含:";

  int highest=*myset.rbegin();
  set<int>::iterator it=myset.begin();
  do {
    cout << ' ' << *it;
  } while ( mycomp(*(++it),highest) );

  cout << '\n';

  return 0;
}

輸出:

myset 包含: 0 1 2 3 4

在上面的示例中,最高變量存儲(chǔ)myset集合的最后一個(gè)元素,并使用該集合的第一個(gè)元素(按排序順序)初始化迭代器。Do-while循環(huán)用于打印將在其中運(yùn)行循環(huán)的元素,直到第一個(gè)鍵小于最后一個(gè)鍵為止(為此,它使用名為mycomp的key_comp()函數(shù))。

實(shí)例3

讓我們看一個(gè)簡(jiǎn)單的實(shí)例:

#include <set>
#include <iostream>

int main( )
{
   using namespace std;

   set <int, less<int> > s1;
   set <int, less<int> >::value_compare vc1 = s1.value_comp( );
   bool result1 = vc1( 2, 3 );
   if( result1 == true )   
   {
      cout << "vc1(2,3)返回true值, "
           << "其中vc1是s1的函數(shù)對(duì)象。"
           << endl;
   }
   else   
   {
      cout << "vc1(2,3)返回false值, "
           << "其中vc1是s1的函數(shù)對(duì)象。"
           << endl;
   }

   set <int, greater<int> > s2;
   set<int, greater<int> >::value_compare vc2 = s2.value_comp( );
   bool result2 = vc2( 2, 3 );
   if( result2 == true )   
   {
      cout << "vc2(2,3)返回true值, "
           << "其中vc2是s2的函數(shù)對(duì)象。"
           << endl;
   }
   else   
   {
      cout << "vc2(2,3)返回false值, "
           << "其中vc2是s2的函數(shù)對(duì)象。"
           << endl;
   }
}

輸出:

vc1(2,3)返回true值,其中vc1是s1的函數(shù)對(duì)象。

vc2(2,3)返回false值,其中vc2是s2的函數(shù)對(duì)象。

實(shí)例4

讓我們看一個(gè)簡(jiǎn)單的示例,以顯示key_comp()和value_comp()之間的區(qū)別:

#include <set>
#include <iostream>
#include<map>

using namespace std;

int main(){

set<int> myset;
int highest1, highest2;

set<int>::key_compare   myCompKeyForSet = myset.key_comp();
set<int>::value_compare myCompValForSet = myset.value_comp();

for (int i=0; i<=5; i++) {
  myset.insert(i);
}

highest1=*myset.rbegin();
set<int>::iterator it=myset.begin();
while ( myCompKeyForSet(*it, highest1) ) it++;
cout << "\nhighest1 is " << highest1;  // prints 5

highest2 = *myset.rbegin();
it=myset.begin();
while ( myCompValForSet(*it, highest2) ) it++;
cout << "\nhighest2 is " << highest2;   // prints 5

return 0;
}

輸出:

highest1 is 5
highest2 is 5

在上面的示例中,當(dāng)我們比較key_comp()和value_comp()時(shí),對(duì)于這樣的集合容器,這兩個(gè)詞是相同的。對(duì)于這兩種類(lèi)型的函數(shù),它將返回相同的值。

C++ STL Set(集合)

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清