C++ primer 第四版 练习3.13,3.14
读一组整数到 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的更多相关文章
- C++学习书籍推荐《C++ Primer 第四版》下载
百度云及其他网盘下载地址:点我 编辑推荐 <C++ Primer中文版(第4版)>对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使<C++ Primer中文版 ...
- C++_系列自学课程_第_12_课_语句_《C++ Primer 第四版》
前面的文章说完了表达式和类型转换的部分内容,在我参考的书里面,接下来讨论的是各种语句,包括:顺序语句.声明语句.复合语句(块语句).语句作用域 .if语句.while语句.for语句.do...whi ...
- C++ Primer 第四版阅读笔记
阅读笔记 初始化 变量定义指定了变量的类型和标识符,也可以为对象提供初始值.定义时指定了初始值的对象被称为是 已初始化的.C++ 支持两种初始化变量的形式:复制初始化和 直接初始化.复制初始化语法用等 ...
- c++ Primer 第四版 第一阶段 const总结
由于期末值考一门软件安全,所以果断看起c++Primer ,因为之前看谭浩强的c++感觉没什么用啊.所以这本书每阶段做个总结!!! 1.Const限定符作用: 在for循环中上限应该用一个固定变量来设 ...
- <C++Primer>第四版 阅读笔记 第三部分 “类和数据抽象”
类定义了数据成员和函数成员:数据成员用于存储与该类类型的对象相关联的状态:而函数成员则负责执行赋予数据意义的操作. 第12章 类 一个类可以包含若干公有的.私有的和受保护的部分:在public部分定义 ...
- C++ Primer 第四版中文版
C++Primer是C++的经典教程. 开始时间:2014-08-10 完成时间:2014-08-28 学习成果:基础语法+
- C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》
上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符 ...
- C++_系列自学课程_第_10_课_表达式_《C++ Primer 第四版》
程序设计语言中大部分程序都在进行表达式的求值操作, 例如求两个数的和,求一个表达式的逻辑结果,或者通过输入输出表达式语句进行输入和输出. 这里我们对表达式进行讨论. 一.表达式 1.表达式 表达式由一 ...
- C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...
随机推荐
- Java 多线程中的任务分解机制-ForkJoinPool,以及CompletableFuture
ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行:当多个“小任务”执行完成之后,再将这些执行结果 ...
- HDU 4819 Mosaic (二维线段树&区间最值)题解
思路: 二维线段树模板题,马克一下,以后当模板用 代码: #include<cstdio> #include<cmath> #include<cstring> #i ...
- RMQ 区间最大值 最小值查询
/*RMQ 更新最小值操作 By:draymonder*/ #include <iostream> #include <cstdio> using namespace std; ...
- java反射基础
转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?opt=1最近在接触到框架的底层的时候,遇到了反射,便想好好的学习和总结一下反射,帮助理解java框架的运行流 ...
- 【转载】TCP 与 UDP 的区别
原文地址:TCP 与 UDP 的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信 ...
- LR下载及破解
原文:http://chjuan1122.blog.163.com/blog/static/122892032013327111040128/ 地址:http://www.genilogix.com/ ...
- google nmt 实验踩坑记录
最近因为要做一个title压缩的任务,所以调研了一些text summary的方法. text summary 一般分为抽取式和生成式两种.前者一般是从原始的文本中抽取出重要的word o ...
- Codeforces Beta Round #94 div 2 B
B. Students and Shoelaces time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- python 字节与字符串转化
name = 'laogaoyang' # 采用系统默认编码格式 nameBytes = name.encode('utf-8') # 先将 name 解码(采用系统默认格式),然后用 'utf-8' ...
- Window系统下用Ant实现Java项目的自动构建和部署
https://blog.csdn.net/xinxin19881112/article/details/7297021 Step 1: 从官网下载Ant包,官网地址http://ant.apache ...