← index
cplusplus11.Examples/iterator/it2.cpp
Source: cplusplus11.Examples/iterator/it2.cpp
/*
 written by Jared Bruni
 http://lostsidedead.com
*/

#include<iostream>
#include<vector>
#include<fstream>

template<typename T, typename Iter>
T addup(Iter start, Iter stop) {
    T total{};
    for(Iter i = start; i != stop; ++i)
        total += *i;
    
    return total;
}

template<typename Iter>
bool WriteVector(Iter start, Iter stop, std::string filename) {
    std::fstream file;
    file.open(filename, std::ios::out);
    if(!file.is_open()) return false;
    for(Iter i = start; i != stop; ++i) {
        file << *i << "\n";
    }
    file.close();
    return true;
}

int main(void) {
    std::cout << "Enter 4 values: ";
    std::vector<float> varr;
    
    for(unsigned int z = 0; z < 4; ++z) {
        float f;
        std::cin >> f;
        varr.push_back(f);
    }
    
    float value=addup<float, std::vector<float>::iterator>(varr.begin(), varr.end());
    value /= varr.size();
    
    std::cout << " Average is: " << value << "\n";
    
    for(auto i = varr.begin(); i != varr.end(); ++i)
        std::cout << "Value is: " << *i << "\n";
    
    if(WriteVector(varr.begin(), varr.end(), "file.txt")) {
        std::cout << "Successfully wrote vector to file.txt\n";
    }
    else {
        std::cout << "Could not write to file.txt.\n";
    }
    return 0;
}