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 );
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 );
● 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 );
key_compare key_comp();
size_type max_size();
reverse_iterator rbegin();
reverse_iterator rend();
size_type size();
void swap( set &object );
iterator upper_bound( const key_type &key );
value_compare value_comp();
/*
* ===========================================================================
*
* 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();
void clear();
size_type count( const KEY_TYPE &key );
bool empty();
iterator end();
pair equal_range( const KEY_TYPE &key );
void erase( iterator pos );
void erase( iterator start, iterator end );
size_type erase( const KEY_TYPE &key );
iterator find( const KEY_TYPE &key );
allocator_type get_allocator();
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();
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!