编写函数sumVector:不返回值
writing a function sumVector : not returning a value
我正在练习向量类上的函数。我已经编写了一个函数"sumVector"来将向量"ages"的所有元素相加,但它并没有返回总数我正在复制我的代码块;我知道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 << sum
出现在sumVector()
的return
之后。返回类型(和sum
的类型)也应该是T
,否则sumVector()
被限制为int
的元素的vector
s(或可转换为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;
}
考虑不在sumVector()
内打印sum
的值作为(IMO),这更清楚:
cout << "whats the sum: " << sumVector(ages);
还可能需要将sumVector()
的结果存储在变量中,并且在计算总和时不向标准输出写入任何内容。
for后面的";"是错误的——按照您的编写方式,分号将是for循环的主体。
我没有触及你的命名(例如整数2有点刺激)。
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的初始化也必须在循环之前完成
相关文章:
- 从python中调用C++函数并获取返回值
- 为什么模板类中的对象不能返回值
- 返回值优化:显式移动还是隐式
- lock_guard是否保护返回值
- 调用CreateProcess()并获取字符串的返回值
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 查找 GCD:并非所有控制路径都返回值
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 如何从 std::thread 返回值
- 将返回值从 exe 传递到 bat,并将其传递给 C# 中的进程
- 方法错误"not all control paths return a value"和方法不返回值
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 对fread的返回值感到困惑
- 程序不向函数返回值
- 如何在另一个函数中使用返回值作为参数?
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 使用 std::p air 进行返回值优化
- 编写函数sumVector:不返回值