C++Primer第五版 3.4.1节练习

来源:互联网 发布:js排序 编辑:程序博客网 时间:2024/05/29 04:26

练习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;}
0 0