我正在使用vector类上的函数进行练习。我写了一个函数“ sumVector”将向量“ age”的所有元素加起来,但是它没有返回总数
我正在复制我的代码块;我知道STL提供求和函数,但这是我自己的实践。如果有人指出我做错了,我将不胜感激

    #include <vector>
    #include <fstream>
    #include <sstream>
    #include <iostream>
    #include <iterator>
    #include <algorithm>
    using namespace std;
    template<typename T>
    int sumVector(const vector<T> &integers2)
    {
         typename vector<T>::const_iterator constIterator;
         //display vector elements using constIterator
         for

         (constIterator=integers2.begin();
         constIterator!=integers2.end();++constIterator);
         int sum=0;
         sum+=*constIterator;
         return sum;
         cout<<sum;
    }




    int main ()
    {
    vector<int> ages;
    vector<float>var;
    ifstream inFile;
    inFile.open("data.txt");
    if(!inFile)
    {
        cout<<"didn't work";
        cin.get();
        exit (1);
    }

    string line;
    getline(inFile, line);
    istringstream in(line);
    copy(std::istream_iterator<int>(in),
      std::istream_iterator<int>(),
      std::back_inserter(ages));
    cout<<ages.at(2)<<endl;
    getline(inFile, line);
    istringstream gin(line);
    copy(istream_iterator<float>(gin),
                                     istream_iterator<float>(),
                                     back_inserter(var));
    cout<<var.at(0)<<endl;
    cout<<"whats the sum";
    sumVector (ages);

    cin.get();

    inFile.close();
    cin.get();

    }

最佳答案

for循环不正确,并且cout << sumreturn出现在sumVector()之后。返回类型(和sum的类型)也应为T,否则sumVector()限于vector元素的int个(或可转换为int s的类型)。

我认为您想要的是以下内容:

template<typename T>
T sumVector(const vector<T> &integers2)
{
    typename vector<T>::const_iterator constIterator;
    T sum=0;
    //display vector elements using constIterator
    for (constIterator=integers2.begin();
         constIterator!=integers2.end();
         ++constIterator)
    {
        sum+=*constIterator;
    }

    cout<<sum;
    return sum;
}


考虑不打印sum中的sumVector()值,因为(IMO)更加清楚:

cout << "whats the sum: " << sumVector(ages);


还可能需要将sumVector()的结果存储在变量中,并且在计算总和时不向标准输出写入任何内容。

关于c++ - 编写函数sumVector:不返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9311891/

10-09 13:35