100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 带你详细了解C++中的map(键值对)和set(集合)

带你详细了解C++中的map(键值对)和set(集合)

时间:2023-03-23 03:17:11

相关推荐

带你详细了解C++中的map(键值对)和set(集合)

后端开发|C#.Net教程

c++,map,set

后端开发-C#.Net教程

php mp3源码下载,vscode功能定制,ubuntu安装oracle,tomcat的配置,php 连接sqlite,网页设计 表单,连接mssql数据库,discuz 数据库服务器,易语言 路由器插件,前端开发有哪些框架,讯代理爬虫代理,php date,阿里seo,springboot默认扫描包,动易标签制作视频教程,好看的科技类网站,蓝色主题网页,dw模板html,aspcms后台修改,页面调用ocx实例,access销存管理系统,易语言程序集变量传递lzw

C++学习:map集合(键值对)

外卖网源码下载,ubuntu的edj文件,tomcat自定义教程,梦到满地爬虫,php在线咨询源码,许昌seo关键词自然排名哪家好lzw

集合(set)与映射(map)属于非线性结构容器类

教务管理系统源码 pb,ubuntu网卡不能编辑,爬虫程序的危害,php峰值,温州seo兼职lzw

map是STL的一个关联性容器,它提供一对一的数据处理能力

###set集合

begin 语法:

iterator begin();

返回指向当前集合中第一个元素的迭代器。

clear 语法:

void clear();

清除当前集合中的所有元素。

count 语法:

size_type count( const key_type &key );

返回当前集合中出现的某个值的元素的数目。

empty 语法:

bool empty();

如果当前集合为空,返回true;否则返回false。

end 语法:

const_iterator end();

返回指向当前集合中最后一个元素的迭代器。

equal_range 语法:

pair equal_range( const key_type &key );

返回集合中与给定值相等的上下限的两个迭代器。

erase 语法:

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

说明:

● 删除i元素;

● 删除从start开始到end结束的元素;

● 删除等于key值的所有元素(返回被删除的元素的个数)。

find 语法:

iterator find( const key_type &key );

在当前集合中查找等于key值的元素,并返回指向该元素的迭代器;如果没有找到,返回指向集合最后一个元素的迭代器。

get_allocator 语法:

allocator_type get_allocator();

返回当前集合的分配器。

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结束返回内的元素插入到集合中;

● 在当前集合中插入val元素,并返回指向该元素的迭代器和一个布尔值来说明val是否成功的被插入了。

(应该注意的是在集合(Sets)中不能插入两个相同的元素。)

lower_bound 语法:

iterator lower_bound( const key_type &key );

返回一个指向大于或者等于key值的第一个元素的迭代器。

key_comp 语法:

key_compare key_comp();

返回一个用于元素间值比较的函数对象。

max_size 语法:

size_type max_size();

返回当前集合能容纳元素的最大限值。

rbegin 语法:

reverse_iterator rbegin();

返回指向当前集合中最后一个元素的反向迭代器。

rend 语法:

reverse_iterator rend();

返回指向集合中第一个元素的反向迭代器。

size 语法:

size_type size();

返回当前集合中元素的数目。

swap 语法:

void swap( set &object );

交换当前集合和object集合中的元素。

upper_bound 语法:

iterator upper_bound( const key_type &key );

在当前集合中返回一个指向大于Key值的元素的迭代器。

value_comp 语法:

value_compare value_comp();

返回一个用于比较元素间的值的函数对象

简单的示例代码:

/* * =========================================================================== * * Filename: setTest.cpp * Description: * Version: 1.0 * Created: 07月01日 22时20分58秒 * Revision: none * Compiler: gcc * Author: (), * Company: * * =========================================================================== */#include#includeusing namespace::std;void showSet(const set i_set){ //通过迭代器的形式输出set集合 cout<<"===========the show start==========="<<endl; set::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 r_set){ cout<<"==========the show reverse set start============="<<endl; //通过反向迭代器输出 set::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 first_set; //第二种构造函数 set second_set(array,array+6); showSet(second_set); //第三种构造函数 set 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::iterator iter; iter = first_set.find(3); first_set.erase(iter); showSet(first_set); first_set.clear(); return 0;}

###map键值对的使用

C++ Maps

C++ Maps 被用作储存“关键字/值”对

begin 语法:

iterator begin();

begin()函数返回一个迭代器指向map的第一个元素。

clear 语法:

void clear();

clear()函数删除map中的所有元素。

count 语法:

size_type count( const KEY_TYPE &key );

count()函数返回map中键值等于key的元素的个数。

empty 语法:

bool empty();

empty()函数返回真(true)如果map为空,否则返回假(false)。

end 语法:

iterator end();

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

equal_range Syntax:

pair equal_range( const KEY_TYPE &key );

equal_range()函数返回两个迭代器——一个指向第一个键值为key的元素,另一个指向最后一个键值为key的元素。

erase 语法:

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

erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素。

find 语法:

iterator find( const KEY_TYPE &key );

find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。

get_allocator 语法:

allocator_type get_allocator();

get_allocator()函数返回map的配置器。

insert 语法:

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

insert()函数:

插入val到pos的后面,然后返回一个指向这个元素的迭代器。

插入start到end的元素到map中。

只有在val不存在时插入val。返回值是一个指向被插入元素的迭代器和一个描述是否插入的bool值。

key_comp 语法:

key_compare key_comp();

key_comp()函数返回一个比较key的函数。

lower_bound 语法:

iterator lower_bound( const KEY_TYPE &key );

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

max_size 语法:

size_type max_size();

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

rbegin 语法:

reverse_iterator rbegin();

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

rend 语法:

reverse_iterator rend();

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

size 语法:

size_type size();

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

swap 语法:

void swap( map &obj );

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

upper_bound 语法:

iterator upper_bound( const KEY_TYPE &key );

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

value_comp 语法:

value_compare value_comp();

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

map集合的一些简单的使用

#include#include#includeusing namespace::std;/* * *map集合的简单使用 * * */class Compare{ public: bool operator()(int a,int b){return a > b; }};int main(int argc,char* argv[]){ //定义一个map的对象 map num_convert_map; map::iterator m_iter; //采用pair来进行键值对的添加 num_convert_map.insert(pair(1,"one")); //通过map集合内部的value_type来进行插入键值对 num_convert_map.insert(map::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 <first <<":"< second << endl; } //通过键来查询值 cout<<num_convert_map[3]<<endl; map string_map; string_map.insert(pair("张三","初中")); string_map["李四"] = "高中"; //由此重写后的map对象的[]运算符是支持泛型的 cout << string_map["张三"]<<endl; //输出map的大小 cout<< "map size:" << num_convert_map.size() <<endl; //通过Compare将map排序,通过赋值拷贝的构造函数 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<< "-------------"<<endl; for(m_iter = num_convert_map2.begin();m_iter != num_convert_map2.end();m_iter++){ cout<first <<";"<second<<endl; } return 0;}

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

本文转自: /qq_29924041/article/details/74080102

推荐教学:《C语言》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。