《C++ Primer 4 Answer Book》 整理[9]——第10章 关联容器


10   关联容器

        7210.3描述关联容器和顺序容器的差别

        答:关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。

        

        7310.6可否定义一个map对象以vector<int>::iterator为键关联int型对象?如果以list<int>::iterator关联int型对象呢?或者,以pair<int,string>关联int?对于每种情况,如果不允许,请解释其原因。

        答:可以定义map对象以vector<int>::iteratorpair<int,string>为键关联int型对象。

                  不能定义map对象以list<int>::iterator为键关联int型对象。因为键类型必须支持<操作,而list容器的迭代器类型不支持<操作。

 

        7410.7对于以int型对象为索引关联vector<int>型对象的map容器,它的mapped_typekey_typevalue_type分别是什么?

        答:分别是,vector<int>intpair< const int,vector<int> >

 

        7510.8编写一个表达式,使用map的迭代器给其元素赋值。

        答:假设map的迭代器为iter,要赋给元素的值为val,则可以用iter->second=val;语句给map的元素赋值。(注意,键是不能修改的,所以只能给值成员赋值。)

        

        7610.10解释下面程序的功能:

                  map<int,int> m;

                  m[0]=1;

                  比较上一程序和下面程序的行为:

                  vector<int> v;

                  v[0]=1;

                  答:程序段map<int,int> m; m[0]=1; 的功能是:首先创建一个空map容器m,然后在m中增加一个键为0的元素,并将其赋值为1.而程序段vector<int> v; v[0]=1;将出现运行时错误。因为vector容器v为空,其中下标为0的元素并不存在。

 

        7710.11哪些类型可用作map容器对象的下标?下标操作符返回的又是什么类型?给出一个具体例子说明,即定义一个map对象,指出哪些类型可用作其下标,以及下标操作符返回的类型。

        答:可用作map容器对象的下标的类型必须是支持<操作的类型;

                  下标操作符返回的类型为map容器中定义的mapped_type类型。例如,对于如下定义的对象:

                  map<string,int> wordCount;

                  可用作其下标的类型为string以及C风格的字符串类型(包括字面值、数组名和指针)。下标操作符返回的类型为int

        

        7810.14map容器的countfind运算有何区别?

        答:前者返回map容器中给定键k的出现次数,其返回值只能是01;后者在map容器中存在按给定键k索引的元素的情况下,返回指向该元素的迭代器,否则返回超出末端迭代器

        

        7910.21解释mapset容器的差别,以及它们各自适用的情况。

        答:map容器和set容器的差别在于:map容器是键值对的集合,而set容器只是键的集合;map类型适用于需要了解键与值的对应的情况,例如字典,而set类型适用于只需要判断某值是否存在的情况,例如判断某人的名字是否在黑名单中。

        

        8010.22解释setlist容器的差别,以及它们各自适用的情况。

        答:set容器和list容器的主要差别在于:set容器中的元素不能修改,而list容器中的元素无此限制。set容器适用于保存元素值不变的集合,而list容器适用于保存会发生变化的元素。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值