读一组整数到 vector 对象,计算并输出每对相邻元素的 和。如果读入元素个数为奇数,则提示用户后一个元素 没有求和,并输出其值。

vector<int> ivec;
int ival;
cout<<"Enter numbers(Ctrl + z to end) "<<endl;
while(cin>>ival)
{
ivec.push_back(ival);
}
if(ivec.size() == )
{
cout<<"No elements"<<endl;
return -;
}
cout<<"Sum of each pair of adjacent element in the vector:"<<endl;
for(vector<int>::size_type ix = ;ix < ivec.size()-;ix = ix + )
{
cout<<ivec[ix] + ivec[ix+]<<"\t";
if((ix+)% == )
{
cout<<endl;
}
}
if(ivec.size()% !=)
{
cout<<endl;
cout<<"The last element is not been summed"<<"and the value is "<<ivec[ivec.size()-]<<endl;
}

然后修改程序:头尾元素两两配 对(第一个和后一个,第二个和倒数第二个,以此类推), 计算每对元素的和,并输出。

vector<int> ivec;
int ival;
cout<<"Enter numbers(Ctrl + z to end) "<<endl;
while(cin>>ival)
{
ivec.push_back(ival);
}
if(ivec.size() == )
{
cout<<"No elements"<<endl;
return -;
}
cout<<"Sum of each pair of adjacent element in the vector:"<<endl;
vector<int>::size_type cnt =;
vector<int>::size_type first =,last = ivec.size() -;
for(;first < last;++first,--last)
{
cout<<ivec[first] + ivec[last]<<"\t";
++cnt;
if(cnt% == )
{
cout<<endl;
}
}
if(first == last)
{
cout<<endl;
cout<<"The last element is not been summed"<<"and the value is "<<ivec[first]<<endl;
}

读入一段文本到 vector 对象,每个单词存储为 vector 中的一个元素。把 vector 对象中每个单词转化为大写字 母。输出 vector 对象中转化后的元素,每八个单词为一 行输出。

vector<string> svec;
string str;
cout<<"Enter numbers(Ctrl + z to end) "<<endl;
while(cin>>str)
{
svec.push_back(str);
}
if(svec.size() == )
{
cout<<"No elements"<<endl;
return -;
}
cout<<"Transformed elements from the vector:"<<endl; for(vector<string>::size_type ix =;ix != svec.size();++ix)
{
for(string::size_type index = ;index != svec[ix].size();++index) if(islower(svec[ix][index]))
svec[ix][index] = toupper(svec[ix][index]);
cout<<svec[ix]<<" "; if((ix+)% ==) cout<<endl; }

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

方法一:

vector<int> ivec(,);

方法二:

vector<int> ivec();
for(ix =;ix != ivec.size() - ;++ix )
{
ivec[ix] = ; }

方法三:

vector<int> ivec();
for(vector<int> iterator iter = ivec.begin();iter != ivec.end();++ iter )
{
*iter =;
}

方法四:

vector<int> ivec;
for(cnt = ;cnt<=;++cnt)
{
ivec.push_back();
}

方法五:

vector<int> ivec;
vector<int> iterator iter = ivec.end();
for(int i = ;i<;i++)
{
ivec.insert(iter ,);
iter = ivec.end();
}

以上是C++ primer给出的五种方法,书上说第4,5种方法更好些。因为他们使用标准库容器中定义的容器操作在容器中添加元素,无需再vector定义对象时指定容器的大小,比较灵活且不容易出错。

C++ primer 第四版 练习3.13,3.14的更多相关文章

  1. C++学习书籍推荐《C++ Primer 第四版》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++ Primer中文版(第4版)>对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使<C++ Primer中文版 ...

  2. C++_系列自学课程_第_12_课_语句_《C++ Primer 第四版》

    前面的文章说完了表达式和类型转换的部分内容,在我参考的书里面,接下来讨论的是各种语句,包括:顺序语句.声明语句.复合语句(块语句).语句作用域 .if语句.while语句.for语句.do...whi ...

  3. C++ Primer 第四版阅读笔记

    阅读笔记 初始化 变量定义指定了变量的类型和标识符,也可以为对象提供初始值.定义时指定了初始值的对象被称为是 已初始化的.C++ 支持两种初始化变量的形式:复制初始化和 直接初始化.复制初始化语法用等 ...

  4. c++ Primer 第四版 第一阶段 const总结

    由于期末值考一门软件安全,所以果断看起c++Primer ,因为之前看谭浩强的c++感觉没什么用啊.所以这本书每阶段做个总结!!! 1.Const限定符作用: 在for循环中上限应该用一个固定变量来设 ...

  5. <C++Primer>第四版 阅读笔记 第三部分 “类和数据抽象”

    类定义了数据成员和函数成员:数据成员用于存储与该类类型的对象相关联的状态:而函数成员则负责执行赋予数据意义的操作. 第12章 类 一个类可以包含若干公有的.私有的和受保护的部分:在public部分定义 ...

  6. C++ Primer 第四版中文版

    C++Primer是C++的经典教程. 开始时间:2014-08-10 完成时间:2014-08-28 学习成果:基础语法+

  7. C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》

    上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符 ...

  8. C++_系列自学课程_第_10_课_表达式_《C++ Primer 第四版》

    程序设计语言中大部分程序都在进行表达式的求值操作, 例如求两个数的和,求一个表达式的逻辑结果,或者通过输入输出表达式语句进行输入和输出. 这里我们对表达式进行讨论. 一.表达式 1.表达式 表达式由一 ...

  9. C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》

    前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...

随机推荐

  1. StringUtils类常用的方法讲解

    StringUtils 方法的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 ...

  2. vs2010中自动给函数或者类加上注释宏模板

    Sub AddFunComment() Dim DocSel As EnvDTE.TextSelection DocSel = DTE.ActiveDocument.Selection DocSel. ...

  3. STL_算法_01_查找算法

    1. 来自教程:第6讲 PPT.15 ◆ 常用的查找算法: 1.1.按条件查找N个相邻的元素 ( adjacent 是 邻近的意思) iterator = adjacent_find(iterator ...

  4. ngIf 和 template的结合使用

    前提: 当遇到 一个种情况,一个元素中既可以显示 一个字符串变量,也可以显示一个模板 实现: // html <span class="ant-alert-message" ...

  5. scss 覆盖 原有变量

    在scss的variables.scss 中会有很多的变量 $color: red !default; $body-color: $color !default; 这些!default 和我们理解的! ...

  6. Anagram 由颠倒字母顺序而构成的字

    2018-07-15 19:23:08 Valid Anagram 问题描述: 问题描述: 可以使用map来记录各个字符出现的个数,在O(n)的时间复杂度内完成,当然也可以使用排序算法在O(nlogn ...

  7. oralce表空间使用情况查询

    SELECT UPPER(F.TABLESPACE_NAME) TABLESPACE_NAME, -- 表空间名, D.TOT_GROOTTE_MB TOT_GROOTTE_MB, -- 表空间大小( ...

  8. C#实现的UDP收发请求工具类实例

    本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...

  9. 1月28日周日,更新ruby到2.5.0版,rvm更新。

    在学习Array的方法的时候,发现文档concat方法可以进行多个数组的添加,而我的不行,猜测是ruby版本没有更新. 查询2.31ruby版本的concat方法,果然和2.5版本的不一样. 于是准备 ...

  10. android--------HttpURLConnection的get,post和图片加载

    URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection.另外一个重要的类是URL,通常URL可以通过传给构造器一个String ...