Heim > Artikel > Backend-Entwicklung > 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();
Gibt einen Iterator zurück, der auf das erste Element in der aktuellen Sammlung zeigt.
clear Syntax:
void clear();
Alle Elemente in der aktuellen Sammlung löschen.
count Syntax:
size_type count( const key_type &key );
Gibt die Anzahl der Elemente mit einem bestimmten Wert zurück, die in der aktuellen Sammlung erscheinen.
empty Syntax:
bool empty();
Wenn die aktuelle Sammlung leer ist, geben Sie true zurück, andernfalls geben Sie false zurück.
end Syntax:
const_iterator end();
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 );
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 );
Beschreibung:
● Elemente von Anfang bis Ende löschen; Elemente gleich dem Schlüsselwert (gibt die Anzahl der gelöschten Elemente zurück).
iterator find( const key_type &key );
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();
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 );
Beschreibung:
● 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.)
iterator lower_bound( const key_type &key );
Gibt einen Zeiger zurück, der größer ist als oder Ein Iterator, der dem ersten Element des Schlüsselwerts entspricht.
key_compare key_comp();
Gibt ein Funktionsobjekt zurück, das für den Wertevergleich zwischen Elementen verwendet wird.
size_type max_size();
Gibt die maximale Grenze der Elemente zurück, die die aktuelle Sammlung enthalten kann.
reverse_iterator rbegin();
Gibt einen umgekehrten Iterator zurück, der auf das letzte Element in der aktuellen Sammlung zeigt.
reverse_iterator rend();
Gibt einen umgekehrten Iterator zurück, der auf das erste Element in der Sammlung zeigt.
size_type size();
Gibt die Anzahl der Elemente in der aktuellen Sammlung zurück.
void swap( set &object );
Elemente in der aktuellen Sammlung und Objektsammlung austauschen.
iterator upper_bound( const key_type &key );
Gibt einen Iterator zurück, der auf Elemente zeigt, die größer als der Schlüsselwert in der aktuellen Sammlung sind.
value_compare value_comp();
Gibt ein Funktionsobjekt zurück, das zum Vergleichen von Werten zwischen Elementen verwendet wird
/*
* ===========================================================================
*
* 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;
}
C++-MapsC++-Maps werden zum Speichern von „Schlüsselwort/Wert“-Paaren verwendet
iterator begin();
begin()-Funktion gibt einen Iterator zurück, der auf das erste Element der Karte zeigt.
void clear();
Die Funktion clear() löscht alle Elemente in der Karte.
size_type count( const KEY_TYPE &key );
count()-Funktion gibt die Anzahl der Elemente in der Karte zurück, deren Schlüsselwert gleich dem Schlüssel ist.
bool empty();
empty()-Funktion gibt true zurück, wenn die Karte leer ist, andernfalls gibt sie false zurück.
iterator end();
end()-Funktion gibt einen Iterator zurück, der auf das Ende der Karte zeigt.
pair equal_range( const KEY_TYPE &key );
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.
void erase( iterator pos );
void erase( iterator start, iterator end );
size_type erase( const KEY_TYPE &key );
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.
iterator find( const KEY_TYPE &key );
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.
allocator_type get_allocator();
Die Funktion get_allocator() gibt den Konfigurator der Karte zurück.
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 );
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_compare key_comp();
key_comp() Funktion gibt eine Funktion zurück, die Schlüssel vergleicht.
lower_bound()函数返回一个迭代器,指向map中键值>=key的第一个元素。 max_size 语法: max_size()函数返回map能够保存的最大元素个数。 rbegin 语法: rbegin()函数返回一个指向map尾部的逆向迭代器。 rend 语法: rend()函数返回一个指向map头部的逆向迭代器。 size 语法: size()函数返回map中保存的元素个数。 swap 语法: swap()交换obj和现map中的元素。 upper_bound 语法: upper_bound()函数返回一个迭代器,指向map中键值>key的第一个元素。 value_comp 语法: value_comp()函数返回一个比较元素value的函数。 map集合的一些简单的使用 感谢大家的阅读,希望大家收益多多。 本文转自: https://blog.csdn.net/qq_29924041/article/details/74080102 推荐教程:《C语言》 iterator lower_bound( const KEY_TYPE &key );
size_type max_size();
reverse_iterator rbegin();
reverse_iterator rend();
size_type size();
void swap( map &obj );
iterator upper_bound( const KEY_TYPE &key );
value_compare value_comp();
#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;
}
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!