第三章 3.3.3节练习

练习3.16

编写一段程序,把练习3.13中vector对象的容量和具体内容输出来。

解答:

使用for配合auto来输出对象。

容量可以用size()函数。


练习3.17

从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写为大写形式。输出改变后的结果,每个词占一行。

解答:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cctype>

using namespace std;

int main(){
	string word;
	vector<string> wvec;
	while (cin >> word){
		wvec.push_back(word);
	}
	for (auto i : wvec){
		transform(i.begin(), i.end(), i.begin(), toupper);
		cout << i <<endl;
	}
}
参考:http://www.cnblogs.com/greenerycn/archive/2009/07/01/1515080.html


练习3.18

下面的程序合法吗?如果不合法,你准备如何修改?

vector<int> ivec;

ivec[0] = 42;

解答:

不合法。

第二句改为: ivec.push_back(42);


练习3.19

如果想定义一个含有10个元素的vector对象,所有元素都是42,请列举出三种不同的方法。哪种方法更好呢?为什么?

解答:

(1) vector<int> ivec(10, 42);

(2) vector<int> ivec{42, 42, 42, 42, 42, 42, 42, 42, 42, 42};

(3) int num[] = {42, 42, 42, 42, 42, 42, 42, 42, 42, 42};

      vector<int> ivec(num, num + 10);

个人喜欢第一种方法,简单。


练习3.20

读入一组整数并把它们存入一个vector对象,将没对响铃整数的和输出出来。改写你的程序,这次要求先输出第一个和最后一个元素的和,接着输出第二个和倒数第二个的和,以此类推。

解答:

#include <iostream>
#include <vector>

using namespace std;

int main(){
	int num[] = { 1, 3, 4, 43, 4, 354, 5, 3, 2, 4, 4, 5, 3, 2, 5, 53, 5, 43,2 };
	vector<int> ivec(num, num + 19);
	auto it = ivec.cbegin();
	auto rit = ivec.crbegin();
	for (; it != (ivec.cbegin() + ivec.size() / 2) && rit != (ivec.crbegin() + ivec.size());
		++it, ++rit){
		cout << *it + *rit << endl;
	}
	if (ivec.size() % 2){
		cout << ivec.at(ivec.size() / 2) << endl;
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值