⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 习题3.15 .html

📁 c++ primer 答案(第4版) 自己整理的 只有1-5章
💻 HTML
📖 第 1 页 / 共 5 页
字号:
punctuation-trim:none;text-autospace:none'>        for
(string::size_type index = 0; index != (*iter).size();</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
++index)</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(islower((*iter)[index])) </p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //单词中下标为index的字符为小写字母</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (*iter)[index]
= toupper((*iter)[index]);</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; *iter &lt;&lt; &quot; &quot;;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++cnt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cnt %
8 == 0)//每8个单词为一行输出</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; endl;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; }</p>



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; return 0;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>}</p>

<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>

<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm'>习题3.18 </p>

</div>

<p class=XT>编写程序来创建有10个元素的vector对象。用迭代器把每个元素值改为当前值的2倍。</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>//创建有10个元素的vector对象,</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>//然后使用迭代器将每个元素值改为当前值的2倍</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>#include &lt;iostream&gt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>#include &lt;vector&gt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>using namespace std;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>int main()</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>{</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; vector&lt;int&gt; ivec(10, 20);//每个元素的值均为20</p>



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; //将每个元素值改为当前值的2倍</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; for (vector&lt;int&gt;::iterator
iter = ivec.begin(); </p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;iter
!= ivec.end(); ++iter) </p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *iter =
(*iter)*2;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; return 0;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>}</p>

<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>

<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm'>习题3.19 </p>

</div>

<p class=XT>验证习题3.18的程序,输出vector的所有元素。</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>//创建有10个元素的vector对象,</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>//然后使用迭代器将每个元素值改为当前值的2倍并输出</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>#include &lt;iostream&gt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>#include &lt;vector&gt;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>using namespace std;</p>



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>int main()</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>{</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; vector&lt;int&gt; ivec(10, 20);//每个元素的值均为20</p>



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; //将每个元素值改为当前值的2倍并输出</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; for (vector&lt;int&gt;::iterator
iter = ivec.begin(); </p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iter
!= ivec.end(); ++iter) {</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *iter =
(*iter)*2;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; *iter &lt;&lt; &quot; &quot;;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; }</p>



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; return 0;</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>}</p>



<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>

<p class=aff2 style='margin-top:6.4pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题3.20 </p>

</div>

<p class=XT>解释一下在上几个习题的程序实现中你用了哪种迭代器,并说明原因。</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal style='text-autospace:none'>上述几个习题的程序实现中使用了类型分别为vector&lt;int&gt;::iterator和vector &lt;string&gt;::iterator的迭代器,通过这些迭代器分别访问元素类型为int和string的vector对象中的元素。</p>

<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>

<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题3.21 </p>

</div>

<p class=XT>何时使用const迭代器?又在何时使用const_iterator?解释两者的区别。</p>

<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>const迭代器是迭代器常量,该迭代器本身的值不能修改,即该迭代器在定义时需要初始化,而且初始化之后,不能再指向其他元素。若需要指向固定元素的迭代器,则可以使用const迭代器。</p>

<p class=MsoNormal style='text-autospace:none'>const_iterator是一种迭代器类型,对这种类型的迭代器解引用会得到一个指向const对象的引用,即通过这种迭代器访问到的对象是常量。该对象不能修改,因此,const_iterator类型只能用于读取容器内的元素,不能修改元素的值。若只需遍历容器中的元素而无需修改它们,则可以使用const_iterator。</p>

<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>

<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题3.22 </p>

</div>

<p class=XT>如果采用下面的方法来计算mid会产生什么结果?</p>



<p class=a1 style='margin-right:.5pt'>vector&lt;int&gt;::iterator
mid = (vi.begin() + vi.end())/2;</p>



<p class=aff4>【解答】</p>

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>将两个迭代器相加的操作是未定义的,因此用这种方法计算mid会出现编译错误。</p>

<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>

<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题3.23 </p>

</div>

<p class=XT>解释下面每个bitset对象包含的位模式:</p>

<p class=MsoNormal align=left style='text-align:left;layout-grid-mode:char;
punctuation-trim:none;text-autospace:none'>(a)
bitset&lt;64&gt; bitvec(32);</p>

<p class=MsoNormal align=left style='text-align:left;layout-grid-mode:char;
punctuation-trim:none;text-autospace:none'>(b)
bitset&lt;32&gt; bv(1010101);</p>

<p class=MsoNormal align=left style='text-align:left;layout-grid-mode:char;
punctuation-trim:none;text-autospace:none'>(c)
string bstr; cin &gt;&gt; bstr; bitset&lt;8&gt; bv(bstr);</p>



<p class=aff4>【解答】</p>

<p class=MsoNormal style='text-autospace:none'>(a) bitvec有64个二进制位,(位编号从0开始)第5位置为1,其余位置均为0。</p>

<p class=MsoNormal style='text-autospace:none'>(b) bv有32个二进制位,(位编号从0开始)第0、2、4、5、7、8、11、13、14、16、17、18、19位置为1,其余位置均为0。因为十进制数1010101对应的二进制数为000000000000011110110100110110101。</p>

<p class=MsoNormal style='text-autospace:none'>(c) bv有8个二进制位,(位编号从0开始)用读入的字符串的从右至左的8个字符对bv的0~7位进行初始化。</p>

<div style='border:none;border-bottom:solid #999999 1.0pt;padding:0cm 0cm 1.0pt 0cm;
margin-left:1.4pt;margin-right:1.4pt'>

<p class=aff2 style='margin-top:8.0pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题3.24 </p>

</div>

<p class=XT style='text-align:justify;text-justify:inter-ideograph'>考虑这样的序列1,2,3,5,8,13,21,并初始化一个将该序列数字所对应的位置设置为1的bitset&lt;32&gt;对象。然后换个方法,给定一个空的bitset对象,编写一小段程序把相应的数位设置为1。</p>

<p class=aff4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -