zoukankan      html  css  js  c++  java
  • 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() == 0)
        {
            cout<<"No elements"<<endl;
            return -1;
        }
        cout<<"Sum of each pair of adjacent element in the vector:"<<endl;
        for(vector<int>::size_type ix = 0;ix < ivec.size()-1;ix = ix + 2)
        {
            cout<<ivec[ix] + ivec[ix+1]<<"	";
            if((ix+1)%6 == 0)
            {
                cout<<endl;
            }
        }
        if(ivec.size()%2 !=0)
        {
            cout<<endl;
            cout<<"The last element is not been summed"<<"and the value is "<<ivec[ivec.size()-1]<<endl;
        }

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

    vector<int> ivec;
        int ival;
        cout<<"Enter numbers(Ctrl + z to end) "<<endl;
        while(cin>>ival)
        {
            ivec.push_back(ival);
        }
        if(ivec.size() == 0)
        {
            cout<<"No elements"<<endl;
            return -1;
        }
        cout<<"Sum of each pair of adjacent element in the vector:"<<endl;
        vector<int>::size_type cnt =0;
        vector<int>::size_type first =0,last = ivec.size() -1;
        for(;first < last;++first,--last)
        {
            cout<<ivec[first] + ivec[last]<<"	";
            ++cnt;
            if(cnt%6 == 0)
            {
                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() == 0)
        {
            cout<<"No elements"<<endl;
            return -1;
        }
        cout<<"Transformed elements from the vector:"<<endl;
    
        for(vector<string>::size_type ix =0;ix != svec.size();++ix)
        {
            for(string::size_type index = 0;index != svec[ix].size();++index)
            
                if(islower(svec[ix][index]))
                    svec[ix][index] = toupper(svec[ix][index]);
                cout<<svec[ix]<<" ";
            
            
            if((ix+1)%8 ==0)
            
                cout<<endl;
            
        }

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

    方法一:

    vector<int> ivec(10,42);

    方法二:

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

    方法三:

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

    方法四:

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

    方法五:

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

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

  • 相关阅读:
    解决Shockwave flash在chrome浏览器上崩溃的问题
    Java实现平衡二叉树(AVLTree)的构建
    Netty4具体解释二:开发第一个Netty应用程序
    cocos2dx实现android的对讯飞语音的合成(语言朗读的实现)
    how tomcat works 读书笔记四 tomcat的默认连接器
    我的职业观
    学习NodeJS第一天:node.js引言
    数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波
    .net web 开发平台- 表单设计器 一(web版)
    白话经典算法系列之中的一个 冒泡排序的三种实现
  • 原文地址:https://www.cnblogs.com/wxmwanggood/p/9327760.html
Copyright © 2011-2022 走看看