练习3.21:请使用迭代器重做3.3.3节(第94页)的第一个练习。
练习3.22:修改之前那个输出text第一段的程序,首先把text的第一段都改写成大写形式,然后再输出它。
练习3.23:编写一段程序,创建一个含有10个整数的vector对象,然后使用迭代期,将所有元素的值都变成原来的两倍。输出vector对象的内容,检验程序是否正确。
答案:见云盘程序。
练习3.21
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v1;
for (auto it = v1.begin(); it != v1.end(); ++it)
cout << *it << " ";
cout << endl;
vector<int> v2(10);
for (auto it = v2.begin(); it != v2.end(); ++it)
cout << *it << " ";
cout << endl;
vector<int> v3(10,42);
for (auto it = v3.begin(); it != v3.end(); ++it)
cout << *it << " ";
cout << endl;
vector<int> v4{10};
for (auto it = v4.begin(); it != v4.end(); ++it)
cout << *it << " ";
cout << endl;
vector<int> v5{10,42};
for (auto it = v5.begin(); it != v5.end(); ++it)
cout << *it << " ";
cout << endl;
vector<string> v6{10};
for (auto it = v6.begin(); it != v6.end(); ++it)
cout << *it << " ";
cout << endl;
vector<string> v7{10,"hi"};
for (auto it = v7.begin(); it != v7.end(); ++it)
cout << *it << " ";
cout << endl;
return 0;
}
练习3.22
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string word;
vector<string> text;
//while (cin >> word)
while(getline(cin , word))
text.push_back(word);
for (auto it = text.begin(); it != text.end() && !(*it).empty(); ++it)
{
// for (auto j = (*it).begin(); j != (*it).end(); ++j)
// j = toupper(j);
for (auto &j : *it)
// 引用加不加 区别很大,不信你试试,引用加了,代表已经修改整个都变
j = toupper (j);
cout << *it <<endl;
}
return 0;
}
练习3.23
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec(10, 42);
for (auto it = ivec.begin(); it != ivec.end(); ++it)
{
*it += *it;
cout << *it << " ";
}
cout << endl;
return 0;
}