c++ - 如何将向量中的每个元素增加指定值?
问题描述
我正在尝试创建一个通用函数,它将容器中的每个元素增加一个指定的值,但我得到的是随机值输出到屏幕上。我假设它是正在输出的内存地址,我只是不确定如何让它正常工作。任何帮助将不胜感激。代码如下。
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;
}
推荐阅读
- c# - 使用没有 Group By 的连接表从 SELECT 语句返回单行
- xaml - 在 xceed 网格列组值模板中获取数据行上下文或值父级?
- regex - 如何刮掉一个字面上包含“\x2d”的页面,但在我的项目中将该字符保存为“-”?
- mysql - 能够使用关联进行迁移,但无法使用关联进行查询(未找到关联)
- xamarin.forms - DataServiceContext.ExecuteAsync 导致有关 User-Agent 标头的异常
- java - 如何在乘法表中制作间距
- css - 在任何非白色背景上将文本颜色更改为白色
- modelica - 如何解决与不在我的 OpenModelica 模型中的变量有关的错误?
- webpack - 使用 dev/hot-middleware 编译时如何忽略对 index.html 的更改?
- javascript - 无法将 javascript 添加到 chrome 扩展 html