首页 > 解决方案 > 如何将向量中的每个元素增加指定值?

问题描述

我正在尝试创建一个通用函数,它将容器中的每个元素增加一个指定的值,但我得到的是随机值输出到屏幕上。我假设它是正在输出的内存地址,我只是不确定如何让它正常工作。任何帮助将不胜感激。代码如下。

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;
}

标签: c++

解决方案


首先,返回 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;
}

推荐阅读