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

📄 习题3.15 .html

📁 c++ primer 答案(第4版) 自己整理的 只有1-5章
💻 HTML
📖 第 1 页 / 共 5 页
字号:
(vector&lt;string&gt;::size_type ix = 0; ix != svec.size(); ++ix) {</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for
(string::size_type index = 0; index != svec[ix].size(); ++index)</p>

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

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
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:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; svec[ix][index]
= toupper(svec[ix][index]);</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout
&lt;&lt; svec[ix] &lt;&lt; &quot; &quot;;</p>

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

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
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:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; }</p>



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

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
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.15 </p>

</div>

<p class=XT>下面程序合法吗?如果不合法,如何更正?</p>



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

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>ivec[0] = 42;</p>



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

<p class=MsoNormal align=left style='text-align:left;text-indent:19.0pt;
text-autospace:none'>不合法。因为ivec是空的vector对象,其中不含任何元素,而下标操作只能用于获取已存在的元素。</p>

<p class=MsoNormal align=left style='text-align:left;text-indent:19.0pt;
text-autospace:none'>更正:将赋值语句改为语句ivec.push_back(42);。</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:5.6pt;margin-right:0cm;margin-bottom:4.0pt;
margin-left:0cm;text-indent:6.0pt'>习题3.16 </p>

</div>

<p class=XT>列出三种定义vector对象的方法,给定10个元素,每个元素值为42。指出是否还有更好的实现方法,并说明为什么。</p>

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

<p class=MsoNormal>方法一:</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>vector&lt;int&gt; ivec(10, 42);</p>

<p class=MsoNormal style='margin-top:4.8pt'>方法二:</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>vector&lt;int&gt; ivec(10);</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>for (ix = 0; ix &lt; 10; ++ix)</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; ivec[ix] = 42;</p>

<p class=MsoNormal style='margin-top:4.8pt'>方法三:</p>



<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>vector&lt;int&gt; ivec(10);</p>

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

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

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

<p class=MsoNormal style='margin-top:4.8pt'>方法四:</p>



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

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>for (cnt = 1; cnt &lt;= 10; ++cnt)</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; ivec.push_back(42);</p>

<p class=MsoNormal style='margin-top:4.8pt'>方法五:</p>



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

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

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>for (int i = 0; i != 10; ++i) {</p>

<p class=MsoNormal align=left style='text-align:left;line-height:9.0pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; ivec.insert(iter, 42);</p>

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

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



<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>各种方法都可达到目的,也许最后两种方法更好一些。它们使用标准库中定义的容器操作在容器中增添元素,无需在定义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'>习题3.17 </p>

</div>

<p class=XT>重做3.3.2节的习题,用迭代器而不是下标操作来访问vector中的元素。</p>

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

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>重做习题3.13如下:</p>



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>//读一组整数到vector对象,计算并输出每对相邻元素的和</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>//使用迭代器访问vector中的元素</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;</p>

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



<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; //读入数据到vector对象</p>

<p class=MsoNormal align=left style='text-align:left;line-height:8.8pt;
punctuation-trim:none;text-autospace:none'>&nbsp;&nbsp;&nbsp; cout &lt;&lt; &quot;Enter numbers(Ctrl+Z
to end):&quot; &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; while (cin&gt;&gt;ival)</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; ivec.push_back(ival);</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; if (ivec.size() == 0) {</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; &quot;No element?!&quot; &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;&nbsp;&nbsp;&nbsp;&nbsp; return
-1;</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; cout &lt;&lt; &quot;Sum of each
pair of adjacent elements in the vector:&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;&nbsp; &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; vector&lt;int&gt;::size_type cnt
= 0;</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;
iter &lt; ivec.end()-1; </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;
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 + *(iter+1) &lt;&lt; &quot;\t&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
% 6 == 0) //每行输出6个和</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>

⌨️ 快捷键说明

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