Erfahren Sie mehr über Map (Schlüssel-Wert-Paare) und Set (Sammlung) in C++

烟雨青岚
Freigeben: 2020-07-06 13:56:05
nach vorne
3770 Leute haben es durchsucht

Erfahren Sie mehr über Map (Schlüssel-Wert-Paare) und Set (Sammlung) in C++

C++-Lernen: Kartensammlung (Schlüssel-Wert-Paar)

Set und Karte gehören zur internen Implementierung von Die Containerklasse mit nichtlinearer Struktur

ist ein ausgeglichener Binärbaum

map ist ein Korrelationscontainer von STL, der Eins-zu-Eins-Datenverarbeitungsfunktionen bietet

Das erste kann als Schlüsselwort bezeichnet werden, und jedes Schlüsselwort kann nur erscheint einmal in der Karte
Der zweite Wert wird als Schlüsselwort bezeichnet

###set set

begin Syntax:

iterator begin();
Nach dem Login kopieren

Gibt einen Iterator zurück, der auf das erste Element in der aktuellen Sammlung zeigt.

clear Syntax:

void clear();
Nach dem Login kopieren
Nach dem Login kopieren

Alle Elemente in der aktuellen Sammlung löschen.

count Syntax:

size_type count( const key_type &key );
Nach dem Login kopieren

Gibt die Anzahl der Elemente mit einem bestimmten Wert zurück, die in der aktuellen Sammlung erscheinen.

empty Syntax:

bool empty();
Nach dem Login kopieren

Wenn die aktuelle Sammlung leer ist, geben Sie true zurück, andernfalls geben Sie false zurück.

end Syntax:

const_iterator end();
Nach dem Login kopieren

Gibt einen Iterator zurück, der auf das letzte Element in der aktuellen Sammlung zeigt.

equal_range Syntax:

pair equal_range( const key_type &key );
Nach dem Login kopieren

Gibt zwei Iteratoren in der Sammlung zurück, wobei die Ober- und Untergrenzen dem angegebenen Wert entsprechen.

erase Syntax:

void erase( iterator i ); 
void erase( iterator start, iterator end ); 
size_type erase( const key_type &key );
Nach dem Login kopieren

Beschreibung:
● Elemente von Anfang bis Ende löschen; Elemente gleich dem Schlüsselwert (gibt die Anzahl der gelöschten Elemente zurück).

Suchsyntax:

iterator find( const key_type &key );
Nach dem Login kopieren
Suchen Sie das Element, das dem Schlüsselwert in der aktuellen Sammlung entspricht, und geben Sie den Iterator zurück, der auf das Element zeigt, geben Sie das letzte zurück Punkt in der Sammlung Ein Iterator von Elementen.

get_allocator Syntax:

allocator_type get_allocator();
Nach dem Login kopieren

Gibt den Allocator der aktuellen Sammlung zurück.

insert Syntax:

iterator insert( iterator i, const TYPE &val ); 
void insert( input_iterator start, input_iterator end ); 
pair insert( const TYPE &val );
Nach dem Login kopieren
Beschreibung:

● Füge val vor Iterator i ein;

● Gib den Iterator von Anfang bis Ende zurück. Das Element wird eingefügt in die Sammlung;
● Fügt das val-Element in die aktuelle Sammlung ein und gibt einen Iterator zurück, der auf das Element zeigt, sowie einen booleschen Wert, der angibt, ob val erfolgreich eingefügt wurde.
(Es ist zu beachten, dass zwei identische Elemente nicht in Mengen (Sets) eingefügt werden können.)

lower_bound Syntax:

iterator lower_bound( const key_type &key );
Nach dem Login kopieren
Gibt einen Zeiger zurück, der größer ist als oder Ein Iterator, der dem ersten Element des Schlüsselwerts entspricht.

key_comp Syntax:

key_compare key_comp();
Nach dem Login kopieren
Gibt ein Funktionsobjekt zurück, das für den Wertevergleich zwischen Elementen verwendet wird.

max_size Syntax:

size_type max_size();
Nach dem Login kopieren
Gibt die maximale Grenze der Elemente zurück, die die aktuelle Sammlung enthalten kann.

rbegin Syntax:

reverse_iterator rbegin();
Nach dem Login kopieren
Gibt einen umgekehrten Iterator zurück, der auf das letzte Element in der aktuellen Sammlung zeigt.

rend-Syntax:

reverse_iterator rend();
Nach dem Login kopieren
Gibt einen umgekehrten Iterator zurück, der auf das erste Element in der Sammlung zeigt.

size Syntax:

size_type size();
Nach dem Login kopieren
Gibt die Anzahl der Elemente in der aktuellen Sammlung zurück.

swap Syntax:

void swap( set &object );
Nach dem Login kopieren
Elemente in der aktuellen Sammlung und Objektsammlung austauschen.

upper_bound Syntax:

iterator upper_bound( const key_type &key );
Nach dem Login kopieren
Gibt einen Iterator zurück, der auf Elemente zeigt, die größer als der Schlüsselwert in der aktuellen Sammlung sind.

value_comp Syntax:

value_compare value_comp();
Nach dem Login kopieren
Gibt ein Funktionsobjekt zurück, das zum Vergleichen von Werten zwischen Elementen verwendet wird

Einfacher Beispielcode:

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


void showSet(const set<int> i_set){
  //通过迭代器的形式输出set集合
  cout<<"===========the show start==========="<<endl;
  set<int>::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============="<<endl;
}

void showReverseSet(set<int> r_set){
  cout<<"==========the show reverse set start============="<<endl;
  //通过反向迭代器输出
  set<int>::reverse_iterator r_iter;
  for(r_iter = r_set.rbegin();r_iter!=r_set.rend();r_iter++){
    cout<< "r_set:"<< *r_iter <<endl;
  }
  cout<<"==========the show reverse set end==============="<<endl;
}


int main(int argc,char *argv[]){
  //set的常用几种构造函数
  int array[6] = {11,3,25,7,9,6};
  //第一种构造函数
  set<int> first_set;
  //第二种构造函数
  set<int> second_set(array,array+6);
  showSet(second_set);
  //第三种构造函数
  set<int> third_set(second_set.begin(),second_set.end());
  showSet(third_set);

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

  //返回当前集合中出现某个值的数量count
  int count = first_set.count(5);
  cout<< "the count:"<< count << endl;

  //返回当前集合是否是null的  empty函数
  bool setIsEmpty = first_set.empty();
  cout << "the set empty type:"<<setIsEmpty <<endl;

  //删除某个元素  erase
  first_set.erase(3);
  showSet(first_set);

  //set的大小
  cout<<"the set size:"<< first_set.size() << endl;
  
  showReverseSet(first_set);

  //交换集合中的元素
  first_set.swap(second_set);
  showSet(first_set);
  showSet(second_set);
  
  //通过find函数来寻找集合中的元素
  set<int>::iterator iter;
  iter = first_set.find(3);
  first_set.erase(iter);
  showSet(first_set);

  first_set.clear();
  return 0;
}
Nach dem Login kopieren

###Verwendung von Map-Schlüssel-Wert-Paaren

C++-MapsC++-Maps werden zum Speichern von „Schlüsselwort/Wert“-Paaren verwendet

begin Syntax:

  iterator begin();
Nach dem Login kopieren
begin()-Funktion gibt einen Iterator zurück, der auf das erste Element der Karte zeigt.

clear Syntax:

void clear();
Nach dem Login kopieren
Nach dem Login kopieren
Die Funktion clear() löscht alle Elemente in der Karte.

count Syntax:

  size_type count( const KEY_TYPE &key );
Nach dem Login kopieren
count()-Funktion gibt die Anzahl der Elemente in der Karte zurück, deren Schlüsselwert gleich dem Schlüssel ist.

empty Syntax:

  bool empty();
Nach dem Login kopieren
empty()-Funktion gibt true zurück, wenn die Karte leer ist, andernfalls gibt sie false zurück.

end Syntax:

  iterator end();
Nach dem Login kopieren
end()-Funktion gibt einen Iterator zurück, der auf das Ende der Karte zeigt.

equal_range Syntax:

  pair equal_range( const KEY_TYPE &key );
Nach dem Login kopieren
equal_range() Funktion gibt zwei Iteratoren zurück – einer zeigt auf das erste Element mit Schlüsselwert und der andere zeigt auf das letzte Element, dessen Schlüsselwert ist Schlüssel.

Erase-Syntax:

  void erase( iterator pos );
  void erase( iterator start, iterator end );
  size_type erase( const KEY_TYPE &key );
Nach dem Login kopieren
Die Funktion erase() löscht das Element an der Pos-Position oder löscht das Element zwischen Anfang und Ende oder löscht diejenigen, deren Wert der Schlüssel ist alle Elemente.

find Syntax:

  iterator find( const KEY_TYPE &key );
Nach dem Login kopieren
Die Funktion find() gibt einen Iterator zurück, der auf das Element mit dem Schlüsselwert zeigt. Wenn es nicht gefunden wird, gibt sie einen Iterator zurück, der auf das Element zeigt bis zum Ende der Karte.

get_allocator Syntax:

  allocator_type get_allocator();
Nach dem Login kopieren
Die Funktion get_allocator() gibt den Konfigurator der Karte zurück.

Syntax einfügen:

  iterator insert( iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val );
  void insert( input_iterator start, input_iterator end );
  pair<iterator, bool> insert( const pair<KEY_TYPE,VALUE_TYPE> &val );
Nach dem Login kopieren

Funktion insert():

Val nach pos einfügen und dann einen Zeiger auf diesen Elementiterator zurückgeben . Fügen Sie Elemente von Anfang bis Ende in die Karte ein.
Fügen Sie val nur ein, wenn val nicht existiert. Der Rückgabewert ist ein Iterator, der auf das eingefügte Element zeigt, und ein Bool-Wert, der beschreibt, ob es eingefügt wurde.

key_comp Syntax:

  key_compare key_comp();
Nach dem Login kopieren
key_comp() Funktion gibt eine Funktion zurück, die Schlüssel vergleicht.

Syntax für untere_Grenze:

  iterator lower_bound( const KEY_TYPE &key );
Nach dem Login kopieren

lower_bound()函数返回一个迭代器,指向map中键值>=key的第一个元素。

max_size 语法:

  size_type max_size();
Nach dem Login kopieren

max_size()函数返回map能够保存的最大元素个数。

rbegin 语法:

  reverse_iterator rbegin();
Nach dem Login kopieren

rbegin()函数返回一个指向map尾部的逆向迭代器。

rend 语法:

  reverse_iterator rend();
Nach dem Login kopieren

rend()函数返回一个指向map头部的逆向迭代器。

size 语法:

  size_type size();
Nach dem Login kopieren

size()函数返回map中保存的元素个数。

swap 语法:

  void swap( map &obj );
Nach dem Login kopieren

swap()交换obj和现map中的元素。

upper_bound 语法:

  iterator upper_bound( const KEY_TYPE &key );
Nach dem Login kopieren

upper_bound()函数返回一个迭代器,指向map中键值>key的第一个元素。

value_comp 语法:

  value_compare value_comp();
Nach dem Login kopieren

value_comp()函数返回一个比较元素value的函数。

map集合的一些简单的使用

#include<iostream>
#include<map>
#include<string>
using namespace::std;
/* *
 *map集合的简单使用
 *
 * */



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

};

int main(int argc,char* argv[]){
  //定义一个map的对象
  map<int,string> num_convert_map;
  map<int,string>::iterator m_iter;

  //采用pair来进行键值对的添加
  num_convert_map.insert(pair<int,string>(1,"one"));
  //通过map集合内部的value_type来进行插入键值对
  num_convert_map.insert(map<int,string>::value_type(2,"two"));
  //通过make_pair来进行键值对的插入
  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++){
    //第一个元素iter->first  第二个元素 iter->second
    cout << m_iter->first <<":"<< m_iter -> second << endl;
  }

  //通过键来查询值
  cout<<num_convert_map[3]<<endl;
  
  map<string,string> string_map;
  string_map.insert(pair<string,string>("张三","初中"));
  string_map["李四"] = "高中";
  //由此重写后的map对象的[]运算符是支持泛型的
  cout << string_map["张三"]<<endl;
  

  //输出map的大小
  cout<< "map size:" << num_convert_map.size() <<endl;
  
  //通过Compare将map排序,通过赋值拷贝的构造函数
  map<int,string,Compare> num_convert_map2(num_convert_map.begin(),num_convert_map.end());
  num_convert_map2.insert(pair<int,string>(5,"张三"));  
  num_convert_map2.insert(pair<int,string>(3,"李四"));  
  num_convert_map2.insert(pair<int,string>(1,"赵柳"));  
  cout<< "-------------"<<endl;
  for(m_iter = num_convert_map2.begin();m_iter != num_convert_map2.end();m_iter++){
    cout<<m_iter->first <<";"<<m_iter->second<<endl;
  }

  return 0;
}
Nach dem Login kopieren

感谢大家的阅读,希望大家收益多多。

本文转自:  https://blog.csdn.net/qq_29924041/article/details/74080102  

推荐教程:《C语言》                               

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über Map (Schlüssel-Wert-Paare) und Set (Sammlung) in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage