如何按指定值增加向量中的每个元素?

问题描述 投票:2回答:1

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

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++
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.