编写函数sumVector:不返回值

时间:2012-02-16 13:13:47

标签: c++ function vector

我正在练习vector类的函数。我已经写了一个函数'sumVector'来累加向量'年龄'的所有元素,但它没有返回总数 我正在复制我的代码块;我知道STL提供了一个sum函数,但这是我自己的实践。如果有人能指出我做错了什么,我将不胜感激

    #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();

    }

2 个答案:

答案 0 :(得分:4)

for循环不正确,cout << sum来自return sumVector()。返回类型(以及sum的类型)也应为T,否则sumVector()仅限于vector元素的int(或者可转换为{的类型{1}} S)。

我认为以下是我想要的东西:

int

考虑不在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的值为(IMO)这更清楚:

sumVector()

可能还需要将cout << "whats the sum: " << sumVector(ages); 的结果存储在变量中,而不是在计算总和时向标准输出写入任何内容。

答案 1 :(得分:2)

“;”在for错误之后 - 你编写它的方式,分号将是for循环的主体。

我没有触及你的命名(例如 integers2 有点令人兴奋)。

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

         sum+=*constIterator;
     }
     cout<<sum;
     return sum;
}

我也重新订购了

  • 总和的打印返回,因为返回结束了该函数的执行。
  • i = 0 的初始化也必须在循环之前完成。