我正在尝试创建一个泛型函数,它将增加容器中的每个元素一个指定的值,但我得到输出到屏幕的随机值。我假设它是输出的内存地址,我只是不知道如何让它正常工作。任何帮助将不胜感激。代码如下。
template<class iterator, class T>
T increment(iterator start, iterator stop, const T & x)
{
for (iterator itr = start; itr != stop; ++itr)
{
itr + x;
}
}
int main() {
vector<int> v = {1, 2, 3, 4, 5};
cout << increment(v.begin(), v.end(), 5);
return 0;
}
首先,返回除void之外的值而不是main函数的函数应正确返回,否则如果函数无法提供有效的返回值,则结果是未定义的。
您可以将功能increment
更改为:
template<typename T>
void increment(std::vector<T>& vec, T val) {
for (auto& e : vec)
e += val;
}
int main(){
std::vector<int> v{ 1, 2, 3, 4, 5 };
for (const auto& i : v)
std::cout << i << ", ";
std::cout << std::endl;
increment(v, 5);
for (const auto& i : v)
std::cout << i << ", ";
std::cout << std::endl;
}