第十一章 11.3.4节练习

练习11.24

下面的程序完成什么功能?

map<int ,int> m;
m[0] = 1;
解答:

插入一个关键字为1的元素,管理那只进行初始化;然后将1赋予它。


练习11.25

对比下面程序与上一题程序

vector<int> v;
v[0] = 1;
解答:

看起来像“直接插入一个元素到序列中”。

但是这个操作是错误的,因为v是空的,所以v[0]本身就已经越界访问了,当在进行赋值的时候,程序自然会奔溃。


练习11.26

可以用什么类型来对一个map进行下标操作?

下标运算符返回的类型时什么?

请给出一个具体例子——即,定义一个map,然后写出一个可以用来对map进行下标操作的类型以及下标运算符将会返回的类型。

解答:

这里引用下标运算符的等价操作

(*((this->insert(make_pair(k,mapped_type()))).first)).second
代码

// accessing mapped values
#include <iostream>
#include <map>
#include <string>

int main ()
{
  std::map<char,std::string> mymap;

  mymap['a']="an element";
  mymap['b']="another element";
  mymap['c']=mymap['b'];

  std::cout << "mymap['a'] is " << mymap['a'] << '\n';
  std::cout << "mymap['b'] is " << mymap['b'] << '\n';
  std::cout << "mymap['c'] is " << mymap['c'] << '\n';
  std::cout << "mymap['d'] is " << mymap['d'] << '\n';

  std::cout << "mymap now contains " << mymap.size() << " elements.\n";

  return 0;
}
输出结果:

mymap['a'] is an element
mymap['b'] is another element
mymap['c'] is another element
mymap['d'] is
mymap now contains 4 elements.

这样就很明确了

进行下标操作的类型就是value_type

返回类型就是mapped_type






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值