首页 > 编程语言 >C++ Primer 第五版 第十一章 练习题编程题目答案

C++ Primer 第五版 第十一章 练习题编程题目答案

时间:2023-04-03 12:01:22浏览次数:59  
标签:练习题 map iterator 练习 C++ 关键字 std 第五版 程序代码


https://github.com/jzplp/Cpp-Primer-Answer

  • 练习11.1
    map用关键字索引,是一个字典。vector用整数索引,是一个列表。
  • 练习11.2
    list 链表
    vector 顺序列表
    deque 双端队列
    map 字典
    set 集合
  • 练习11.3
    11.3 map单词计数程序代码
  • 练习11.4
    11.4 去标点map单词计数程序代码
  • 练习11.5
    如果关键字有对应的值就用map,只有关键字就用set
  • 练习11.6
    set是按照关键字索引读取的,list只能是用迭代器读取的。
    顺序存储可以选list,需要关键字索引可以用set
  • 练习11.7
    11.7程序代码
  • 练习11.8
    11.8程序代码 使用set的优势是不需要手动去除重复元素
  • 练习11.9
std::map<std::string, std::list<size_t>> m;
  • 练习11.10
    可以定义vector::iterator到int的map,前提是实际的关键字必须来自同一容器。
    不可以定义list::iterator到int的map,因为关键字类型没有定义<操作
  • 练习11.11
multiset<Sales_data, bool (*)(const Sales_data &, const Sales_data &)>
mapped_type     vector<int>
key_type        int
value_type      pair<const int, vector<int>>
  • 练习11.16
iter->second = value;
  • 练习11.17
  1. 不合法
  2. 不合法
  3. 合法
  4. 合法
  • 练习11.18
std::map<const std::string, size_t>::iterator
  • 练习11.19
std::multiset<Sales_data, bool (*)(const Sales_data &, const Sales_data &)>::iterator mp = bookstore.begin();

答案书中的pair迭代器错误。

参数类型:
{std::string, std::vector<int>}
返回类型:
std::pair<std::map<std::string, std::vector<int>>::iterator, bool>
  • 练习11.23
    11.23 用multimap重写11.14程序代码
  • 练习11.24
    创建一个map,并添加一个{0,1}元素
  • 练习11.25
    创建一个vector,第二句话错误。
  • 练习11.26
    用key_type对map进行下标操作。下标运算符返回的类型是mapped_type
    例子:
std::map<std::string, zise_t> m;
m[std::string("str")] = 1;
  • 练习11.27
    需要查找关键字有几个时用count,仅仅需要知道关键字在不在容器中时用find
  • 练习11.28
std::map<std::string, std::vector<int>> m;
std::map<std::string, std::vector<int>>::iterator = m.find(str);
  • 练习11.29
    他们全部返回大于该关键字的第一个元素,如果不存在则返回尾迭代器
  • 练习11.30
    pos.first是一个迭代器,指向当前使用的元素。
    pos.first->second 取出当前使用的元素的值。
  • 练习11.31
    11.31程序代码
  • 练习11.32
    11.31答案代码中已经实现了按照字典序打印
    11.31程序代码
  • 练习11.33
    11.33 单词转换程序代码
  • 练习11.34
    首先,find替换为下标运算符,如果map中没有s,程序会在map中创建关键字s并初始化值为空。
    其次,下标运算符会返回map中的值,也就是说如果map中没有s,那么就返回一个空字符串。
  • 练习11.35
    如果存在重复关键字,则只插入第一个出现的关键字和值。
  • 练习11.36
    会出现如下的错误:
terminate called after throwing an instance of 'std::runtime_error'
  what():  no rule for 5

标签:练习题,map,iterator,练习,C++,关键字,std,第五版,程序代码
From: https://blog.51cto.com/u_15995687/6165964

相关文章

  • 【已解决】configure: error: C++ compiler cannot create executables
    1.背景 centos7在升级gccconfigure的时候出现的问题A100-01-$build#../configure--prefix=/usr/local/gcc--enable-threads=posix--disable-checking--disable-multilib--enable-languages=c,c++checkingbuildsystemtype...x86_64-pc-linux-gnucheckinghosts......
  • [C/C++] 判断电脑存储模式(大端/小端)
    C语言版本:#include<stdio.h>#include<inttypes.h>intmain(){uint32_tnum=0xaabbccdd;//字节方向:高->低,也就是aa是高字节,dd是低字节uint8_t*point=(uint8_t*)(&num);for(inti=0;i<sizeof(num);++i){......
  • c++ async future get
    #include<chrono>#include<ctime>#include<future>#include<iomanip>#include<iostream>#include<sstream>#include<string>#include<unistd.h>#include<uuid/uuid.h>std::stringget_time_now(){......
  • C++
    同名的namespace(名字空间/命名空间)有自动合并(为了声明和定义可以分开写)在项目中函数名、全局变量、结构、联合、枚举、类,非常有可能名字冲突,而名字空间就对这些逻辑空间划分(不是物理单元划分),为了解决命名冲突,C++之父为防止命名冲突给C++设计一个名注意:namespace(名字空间/......
  • [2022年蓝桥杯C/C++ A组]个人做题记录
    碎碎念欸嘿,鸽了小半年去做了一些不喜欢的事情,但兜兜转转,还是acm最香捏求和题意求\(\sum_{i=1}^n\sum_{j=1}^na_i*a_j(i!=j)\)题解感觉是去年的时候笨人唯一做满分的题……经典前缀和,设\(sum[i]=\sum_{j=i}^na[j]\),答案即为\(\sum_{i=1}^{n-1}a[i]*sum[i+1]\)#definein......
  • C++学习笔记
    char和string的区别字符串string:C++string详解,C++字符串详解(biancheng.net)string是字符串类型,是在C的基础上对字符数组做封装,是一个类,有自己的函数,存的是一个完整的字符串,确实是由字符组成的,但不能认为里面是一个个char数据类型组成的。因而单拎出来里面的字符不能认为是cha......
  • C++11新特性之std::function和bind绑定器
    在C++中,存在可调用对象这一个概念,可调用对象有以下几种定义:(1).是一个函数指针(2).是一个具有operator()成员函数的类对象(仿函数)(3).是一个可被转换为函数指针的类对象(4).是一个类成员(函数指针)一、可调用对象包装器----std::functionstd::function是可调用对象的包装......
  • 2018年第九届蓝桥杯—B组C/C++程序设计省赛解题-2明码
    .明码汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节,一共16......
  • mingw64 + nvim + coc.nvim + nvim-dap : C++ windows - 01
    目标用做C++编译器尽量不要扩展其它功能python是避免不了,所以才安装的。1.1下载安装https://mirror.tuna.tsinghua.edu.cn/msys2/distrib/msys2-x86_64-latest.exe安装路径:C:\gnu\msys641.2mingw64.exe使用这个:C:\gnu\msys64\mingw64.exe1.3安装程序:pac......
  • mingw64 + nvim + coc.nvim + nvim-dap : C++ windows - 02
    2.1命令行工具https://github.com/sharkdp/fdhttps://github.com/junegunn/fzfhttps://github.com/BurntSushi/ripgrephttps://github.com/tree-sitter/tree-sitterC:\gnu\cli\fd.exeC:\gnu\cli\fzf.exeC:\gnu\cli\rg.exeC:\gnu\cli\tree-sitter.exe添加到path......