我正在练习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();
}
答案 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;
}
我也重新订购了