zoukankan      html  css  js  c++  java
  • 第二十三模板 18.3关联容器 简单

    //第二十三模板 18.3关联容器
    /*顺序容器可使用下标或者迭代器对元素进行顺序或者随机访问,但是不能使用关键值对关键元素进访问
    关联容器弥补了这个缺点,关联容器可以使用关键字对关键元素进行访问
    标准C++库提供了四个关联容器,映射 多重映射 集合和多重集合*/
    
    //1映射
    //标准映射容器类maps要关联容器的一种
    /*
    begin()    返因指向map头部的迭代器
    clear()    删除所有元素
    count()    返回指定元素出现的次数
    empty()    如果map为空由返回true
    end()      返回指向map末尾的迭代器
    equal_range()返回特殊条目的迭代器对
    erase()    删除一个元素
    find()     查找一个元素
    get_allocator()  返回map的配置器
    insert()   插入元素
    key_comp()  返回比较元素key的函数
    lower_bound()  返回键值>=给定元素的第一个位置
    max_size()   返回可以容红领巾的最大元素个数
    rbegin()     返回一个指向map尾部的逆向迭代器
    rend()       返回一个指向map头部的逆向迭代器
    size()       返回map中元素的个数
    swap()       交换两个map
    upper_bound()  返回键值>给定元素的第一个位置
    value_comp()   返回比较元素value的函数
    */
    
    //map类的方insert()该方法被重载了三次
    //iterator insert(iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val)
    //原型插入val到pos的后面,然后返回一个指向这个元素的迭代器
    
    //void insert(input_iterator start, input_iterator end);
    //原型插入start到end的元素到map中
    
    //pait<iterator, bool> insert(const pair<KEY_TYPE,VALUE_TYPE>&val)
    //原型只有在val不存在时插入val,返回值是一个指向被插入元素的迭代器和一个描述是否插入的bool值
    
    
    //如何根据关键字搜索关联值
    //iterator find(const key_type& k)
    //const_iterator find(const key_type& k)const;
    /*
    #include <iostream>
    #include <map>
    #include <string>
    using namespace std;
    typedef map<string,string>::const_iterator CIT;
    typedef map<string,string>::value_type cit;
    template<class T1, class T2>
    void show(CIT &c, map<T1,T2>&n)
    {
    	for(c=n.begin(); c!=n.end(); ++c){
    		cout<<c->first<<"\t"<<c->second<<endl;
    	}
    }
    int main()
    {
        string str="武汉";
    	map<string,string>name,name1;
    	name["范伟"]=str;
    	name1["朱若军"]="青岛";
    	name1.insert(name1.end(),cit("朱然","长春")); //将cit插入到name1的尾处
    	name.insert(name1.begin(),name1.end()); //将name1从开始到结束插入到name中
    	cout<<"映射容器name中共有"<<name.size()<<"个元素"<<endl;
    	CIT cit;
    	show(cit,name);
    
    	cout<<"查找关键字为'朱然'的所有内容并输出"<<endl;
    	cit = name.find("朱然");
    	if(cit == name.end()){
    	     cout<<"对不起,没有这个关键字"<<endl;
    	}else{
    		cout<<cit->first<<"\t"<<cit->second<<endl;
    	}
    	cout<<"关键字等于'范伟'的元素的个数为:"<<name.count("范伟")<<endl;
    	cout<<"删除关键字为'范伟'的所有元素"<<endl;
    	name.erase("范伟");
    	cout<<"再次输出映射容器name中的所有元素"<<endl;
    	show(cit,name);
    
    	cout<<"删除映射容器name中所有元素"<<endl;
    	name.clear();
    	if(name.empty())
    	{
    	     cout<<"映射容器name为空"<<endl;
    	}else{
    	     show(cit,name);
    	}
    	system("pause");
    	return 0;
    }*/
    
    //2集合
    //set联合容器,或者称为集合,这些数据的值必须是唯一的,这一点与映射容器map很相似,但不同的是set关键字等于数据,map则将关键字与数据分开了,而set容器中的数据都是经过排序后的
    /*
    begin()    返回指向第一个元素的迭代器
    clear()    清除所有元素
    count()    返回某个值元素的个数
    empty()    如果集合为空,返回true
    end()      返回指向最后一个元素的迭代器
    equal_reange()  返回集合与给定值相等的上下限的两个迭代器
    erase()    删除集合中的元素
    find()     返回一个指向被查找到元素的迭代器
    get_allocator()  返回集合的分配器
    insert()   在集合中插入元素
    lower_bound()  返回指向大于(或等于)某值的第一个元素的迭代器
    key_comp()     返回一个用于元素间值比较的函数
    max_size()     返回集合通容纳的元素的最大限值
    rbegin()       返回指向集合最后一个元素的返回迭代器
    rend()         返回指向集合中第一个元素的返向迭代器
    size()         集合中元素的数目
    swap()         交换两个集合变量
    upper_bound()  返回大于某个值元素的迭代器
    value_comp()    返回一个用于比较元素间的值的函数
    */
    /*
    #include <iostream>
    #include <iterator>
    #include <set>
    #include <string>
    using namespace std;
    typedef set<string>::const_iterator CIT;
    template<class T>
    void show(CIT&it, set<T>&s)
    {
    	for(it = s.begin(); it!=s.end(); ++it)
    	{
    	    cout<<*it<<"\t";
    	}
    	cout<<endl;
    }
    int main()
    {    
    	const int N=5;
    	string s1[N]={"Mick","Bill","Gate","Rose","Jane"};
    	string s2[N]={"张锋","秦平","李力","陆放","胡涛"};
    	set<string>name1;
    	name1.insert(s1,s1+N);
    	set<string>name2(s2,s2+N);
    	CIT it;
    	cout<<"输出name1中各个元素:"<<endl;
    	show(it,name1);
    	cout<<"输出name2中各个元素"<<endl;
    	show(it,name2);
    	cout<<"查找name1中大于或者等于关键字'李力'的第一个元素"<<endl;
    	it = name2.lower_bound("李力");
        cout<<*it<<endl;
    	cout<<"查找name1中大于关键字李力'的第一个元素"<<endl;
    	it = name2.upper_bound("李力");
    	cout<<*it<<endl;
    	system("pause");
    	return 0;
    }*/
    

      

  • 相关阅读:
    【JavaScript知识点一】JavaScript 数据类型
    grunt操作之Gruntfile.js
    js重定向后跳转到当前页面锚点
    Java-变量和方法
    Java-运算符
    Java-类型转化
    Java-数组
    Java-循环结构(for,while)
    Java-选择结构(if-else)
    Java-数据类型(引用类型)
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2711699.html
Copyright © 2011-2022 走看看