• 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定义对象时指定容器的大小,比较灵活且不容易出错。

  • 相关阅读:
    Linux搭建ElasticSearch环境
    从DDD开始说起
    TFS看板晨会
    TFS看板的迭代规划
    TFS看板规则
    TFS看板的设计
    Api容器在应用架构演化中的用途
    基于Abp的WebApi容器
    线程队列
    动态类型序列化
  • 原文地址:https://www.cnblogs.com/wxmwanggood/p/9327760.html
Copyright © 2020-2023  润新知