真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

帶你詳細(xì)了解C++中的map(鍵值對)和set(集合)

C++學(xué)習(xí):map集合(鍵值對)

10年的靈璧網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整靈璧建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“靈璧網(wǎng)站設(shè)計(jì)”,“靈璧網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

集合(set)與映射(map)屬于非線性結(jié)構(gòu)容器類

內(nèi)部實(shí)現(xiàn)上面是平衡二叉樹

map是STL的一個(gè)關(guān)聯(lián)性容器,它提供一對一的數(shù)據(jù)處理能力

其中第一個(gè)可以稱為關(guān)鍵字,每個(gè)關(guān)鍵字只能在map中出現(xiàn)一次
第二個(gè)稱為該關(guān)鍵字的值

###set集合

begin 語法:

iterator begin();

返回指向當(dāng)前集合中第一個(gè)元素的迭代器。

clear 語法:

void clear();

清除當(dāng)前集合中的所有元素。

count 語法:

size_type count( const key_type &key );

返回當(dāng)前集合中出現(xiàn)的某個(gè)值的元素的數(shù)目。

empty 語法:

bool empty();

如果當(dāng)前集合為空,返回true;否則返回false。

end 語法:

const_iterator end();

返回指向當(dāng)前集合中最后一個(gè)元素的迭代器。

equal_range 語法:

pair equal_range( const key_type &key );

返回集合中與給定值相等的上下限的兩個(gè)迭代器。

erase 語法:

void erase( iterator i ); 
void erase( iterator start, iterator end ); 
size_type erase( const key_type &key );

說明:
● 刪除i元素;
● 刪除從start開始到end結(jié)束的元素;
● 刪除等于key值的所有元素(返回被刪除的元素的個(gè)數(shù))。

find 語法:

iterator find( const key_type &key );

在當(dāng)前集合中查找等于key值的元素,并返回指向該元素的迭代器;如果沒有找到,返回指向集合最后一個(gè)元素的迭代器。

get_allocator 語法:

allocator_type get_allocator();

返回當(dāng)前集合的分配器。

insert 語法:

iterator insert( iterator i, const TYPE &val ); 
void insert( input_iterator start, input_iterator end ); 
pair insert( const TYPE &val );

說明:
● 在迭代器i前插入val;
● 將迭代器start開始到end結(jié)束返回內(nèi)的元素插入到集合中;
● 在當(dāng)前集合中插入val元素,并返回指向該元素的迭代器和一個(gè)布爾值來說明val是否成功的被插入了。
(應(yīng)該注意的是在集合(Sets)中不能插入兩個(gè)相同的元素。)

lower_bound 語法:

iterator lower_bound( const key_type &key );

返回一個(gè)指向大于或者等于key值的第一個(gè)元素的迭代器。

key_comp 語法:

key_compare key_comp();

返回一個(gè)用于元素間值比較的函數(shù)對象。

max_size 語法:

size_type max_size();

返回當(dāng)前集合能容納元素的限值。

rbegin 語法:

reverse_iterator rbegin();

返回指向當(dāng)前集合中最后一個(gè)元素的反向迭代器。

rend 語法:

reverse_iterator rend();

返回指向集合中第一個(gè)元素的反向迭代器。

size 語法:

size_type size();

返回當(dāng)前集合中元素的數(shù)目。

swap 語法:

void swap( set &object );

交換當(dāng)前集合和object集合中的元素。

upper_bound 語法:

iterator upper_bound( const key_type &key );

在當(dāng)前集合中返回一個(gè)指向大于Key值的元素的迭代器。

value_comp 語法:

value_compare value_comp();

返回一個(gè)用于比較元素間的值的函數(shù)對象

簡單的示例代碼:

/*
 * ===========================================================================
 *
 *       Filename:  setTest.cpp
 *    Description:  
 *        Version:  1.0
 *        Created:  2017年07月01日 22時(shí)20分58秒
 *       Revision:  none
 *       Compiler:  gcc
 *         Author:   (), 
 *        Company:  
 *
 * ===========================================================================
 */
#include
#include
using namespace::std;


void showSet(const set i_set){
  //通過迭代器的形式輸出set集合
  cout<<"===========the show start==========="<::const_iterator c_iter;
  for(c_iter = i_set.begin(); c_iter !=i_set.end();c_iter++){
    cout<< "i_set:"<<*c_iter << endl;
  }
  cout<<"===========the show end============="< r_set){
  cout<<"==========the show reverse set start============="<::reverse_iterator r_iter;
  for(r_iter = r_set.rbegin();r_iter!=r_set.rend();r_iter++){
    cout<< "r_set:"<< *r_iter < first_set;
  //第二種構(gòu)造函數(shù)
  set second_set(array,array+6);
  showSet(second_set);
  //第三種構(gòu)造函數(shù)
  set third_set(second_set.begin(),second_set.end());
  showSet(third_set);

  //set的插入insert函數(shù)
  first_set.insert(3);
  first_set.insert(6);
  first_set.insert(5);
  first_set.insert(5);
  showSet(first_set);

  //返回當(dāng)前集合中出現(xiàn)某個(gè)值的數(shù)量count
  int count = first_set.count(5);
  cout<< "the count:"<< count << endl;

  //返回當(dāng)前集合是否是null的  empty函數(shù)
  bool setIsEmpty = first_set.empty();
  cout << "the set empty type:"<::iterator iter;
  iter = first_set.find(3);
  first_set.erase(iter);
  showSet(first_set);

  first_set.clear();
  return 0;
}

###map鍵值對的使用
C++ Maps
C++ Maps 被用作儲存“關(guān)鍵字/值”對

begin 語法:

iterator begin();

begin()函數(shù)返回一個(gè)迭代器指向map的第一個(gè)元素。

clear 語法:

void clear();

clear()函數(shù)刪除map中的所有元素。

count 語法:

size_type count( const KEY_TYPE &key );

count()函數(shù)返回map中鍵值等于key的元素的個(gè)數(shù)。

empty 語法:

bool empty();

empty()函數(shù)返回真(true)如果map為空,否則返回假(false)。

end 語法:

iterator end();

end()函數(shù)返回一個(gè)迭代器指向map的尾部。

equal_range Syntax:

pair equal_range( const KEY_TYPE &key );

equal_range()函數(shù)返回兩個(gè)迭代器——一個(gè)指向第一個(gè)鍵值為key的元素,另一個(gè)指向最后一個(gè)鍵值為key的元素。

erase 語法:

void erase( iterator pos );
  void erase( iterator start, iterator end );
  size_type erase( const KEY_TYPE &key );

erase()函數(shù)刪除在pos位置的元素,或者刪除在start和end之間的元素,或者刪除那些值為key的所有元素。

find 語法:

iterator find( const KEY_TYPE &key );

find()函數(shù)返回一個(gè)迭代器指向鍵值為key的元素,如果沒找到就返回指向map尾部的迭代器。

get_allocator 語法:

allocator_type get_allocator();

get_allocator()函數(shù)返回map的配置器。

insert 語法:

iterator insert( iterator pos, const pair &val );
  void insert( input_iterator start, input_iterator end );
  pair insert( const pair &val );

insert()函數(shù):
插入val到pos的后面,然后返回一個(gè)指向這個(gè)元素的迭代器。
插入start到end的元素到map中。
只有在val不存在時(shí)插入val。返回值是一個(gè)指向被插入元素的迭代器和一個(gè)描述是否插入的bool值。

key_comp 語法:

key_compare key_comp();

key_comp()函數(shù)返回一個(gè)比較key的函數(shù)。

lower_bound 語法:

iterator lower_bound( const KEY_TYPE &key );

lower_bound()函數(shù)返回一個(gè)迭代器,指向map中鍵值>=key的第一個(gè)元素。

max_size 語法:

size_type max_size();

max_size()函數(shù)返回map能夠保存的元素個(gè)數(shù)。

rbegin 語法:

reverse_iterator rbegin();

rbegin()函數(shù)返回一個(gè)指向map尾部的逆向迭代器。

rend 語法:

reverse_iterator rend();

rend()函數(shù)返回一個(gè)指向map頭部的逆向迭代器。

size 語法:

size_type size();

size()函數(shù)返回map中保存的元素個(gè)數(shù)。

swap 語法:

void swap( map &obj );

swap()交換obj和現(xiàn)map中的元素。

upper_bound 語法:

iterator upper_bound( const KEY_TYPE &key );

upper_bound()函數(shù)返回一個(gè)迭代器,指向map中鍵值>key的第一個(gè)元素。

value_comp 語法:

value_compare value_comp();

value_comp()函數(shù)返回一個(gè)比較元素value的函數(shù)。

map集合的一些簡單的使用

#include
#include
#include
using namespace::std;
/* *
 *map集合的簡單使用
 *
 * */



class Compare{
  public:
    bool operator()(int a,int b){
      return a > b;
    }

};

int main(int argc,char* argv[]){
  //定義一個(gè)map的對象
  map num_convert_map;
  map::iterator m_iter;

  //采用pair來進(jìn)行鍵值對的添加
  num_convert_map.insert(pair(1,"one"));
  //通過map集合內(nèi)部的value_type來進(jìn)行插入鍵值對
  num_convert_map.insert(map::value_type(2,"two"));
  //通過make_pair來進(jìn)行鍵值對的插入
  num_convert_map.insert(make_pair(3,"three"));

  //map重載了[],[鍵] = "值"
  num_convert_map[0] = "zero";


  //輸出map中的元素
  for(m_iter =num_convert_map.begin();m_iter != num_convert_map.end() ;m_iter++){
    //第一個(gè)元素iter->first  第二個(gè)元素 iter->second
    cout << m_iter->first <<":"<< m_iter -> second << endl;
  }

  //通過鍵來查詢值
  cout< string_map;
  string_map.insert(pair("張三","初中"));
  string_map["李四"] = "高中";
  //由此重寫后的map對象的[]運(yùn)算符是支持泛型的
  cout << string_map["張三"]< num_convert_map2(num_convert_map.begin(),num_convert_map.end());
  num_convert_map2.insert(pair(5,"張三"));  
  num_convert_map2.insert(pair(3,"李四"));  
  num_convert_map2.insert(pair(1,"趙柳"));  
  cout<< "-------------"<first <<";"<second<

感謝大家的閱讀,希望大家收益多多。

本文轉(zhuǎn)自: https://blog.csdn.net/qq_29924041/article/details/74080102

推薦教程:《C語言》
名稱欄目:帶你詳細(xì)了解C++中的map(鍵值對)和set(集合)
瀏覽路徑:http://weahome.cn/article/cpijps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部