zoukankan      html  css  js  c++  java
  • c++primer-p101.ex3.24

    要求使用迭代器

    读入一组整数并把它们存入一个vector对象

    1. 将相邻每对整数和输出

    2. 先输出第一个和最后一个数的和,然后是第二个和倒数第二个...等等

    自己写的:

    #include<iostream>
    #include<vector>
    using namespace std;
    void sumOffirst_last(const vector<int> &p){
    	for(auto t=p.begin();t!=p.end()-1;t++)
    		cout<<*t+*(t+1)<<(t!=p.end()-2?" ":"
    ");
    }
    void sumOfnearby(const vector<int> &p){
    	auto beg=p.begin(),end=p.end();
    	auto mid=beg+(end-beg)/2;
    	if(p.size()%2!=0)
    		mid++;
    	for(auto t=beg;t!=mid;t++)
    		cout<<*t+*(end-1-(t-beg))<<(t!=mid-1? " ":"
    ");
    }
    int main()
    {
    	vector<int> v;
    	for(int a;cin>>a;v.push_back(a));
    	sumOffirst_last(v);
        sumOfnearby(v);
        return 0;
    }


    参考答案:

    #include <iostream>
    #include <vector>
    
    using std::vector; using std::cout; using std::endl; using std::cin;
    
    int main()
    {
        vector<int> v;
        for (int buffer; cin >> buffer; v.push_back(buffer));
    
        if (v.size() < 2)
        {
            cout << " please enter at least two integers";
            return -1;
        }
    
        for (auto it = v.cbegin(); it + 1 != v.cend(); ++it)
            cout << *it + *(it + 1) << " ";
        cout << endl;
    
        for (auto lft = v.cbegin(), rht = v.cend() - 1; lft <= rht; ++lft, --rht)//!!!!
            cout << *lft + *rht << " ";
        cout << endl;
    
        return 0;
    }

    主要在输出第二种形式的和,自己写的太过繁琐,用迭代器可以直接确定倒数的对象,无需用长度去算。

  • 相关阅读:
    归档:类和对象
    归档:字符串类
    腾讯云域名解析
    Java课堂动手动脑--方法
    软件工程个人作业03——PSP记录
    软件工程个人作业03
    软件工程个人作业02——PSP0级要求记录 + 第三周进度条
    软件工程个人作业02
    第二周学习进度条
    软件工程个人作业01
  • 原文地址:https://www.cnblogs.com/yueshangzuo/p/5889906.html
Copyright © 2011-2022 走看看