首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用参数/修改std :: foreach

在C++中,std::for_each是一个算法,用于遍历容器中的元素并对每个元素执行特定操作。但是,std::for_each不支持修改容器中的元素。如果您需要修改容器中的元素,可以使用std::transform算法。

std::transform接受两个迭代器和一个函数对象,并对容器中的每个元素应用该函数对象。函数对象可以是一个函数指针、一个函数对象或一个Lambda表达式。该算法将修改后的元素存储在另一个容器中,因此需要提供一个输出迭代器。

以下是一个使用std::transform修改容器中元素的示例:

代码语言:c++
复制
#include<iostream>
#include<vector>
#include<algorithm>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};

    // 使用Lambda表达式将每个元素乘以2
    std::transform(v.begin(), v.end(), v.begin(), [](int i) { return i * 2; });

    // 输出修改后的容器
    for (int i : v) {
        std::cout << i << " ";
    }

    return 0;
}

输出:

代码语言:txt
复制
2 4 6 8 10

在上面的示例中,std::transform将每个元素乘以2,并将结果存储在原始容器中。注意,输出迭代器必须指向原始容器中的元素,而不是一个新的容器中的元素。

如果您需要在遍历容器时修改其中的元素,可以使用std::for_each和迭代器。例如:

代码语言:c++
复制
#include<iostream>
#include<vector>
#include<algorithm>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};

    // 使用Lambda表达式将每个元素乘以2
    std::for_each(v.begin(), v.end(), [](int &i) { i *= 2; });

    // 输出修改后的容器
    for (int i : v) {
        std::cout << i << " ";
    }

    return 0;
}

输出:

代码语言:txt
复制
2 4 6 8 10

在上面的示例中,std::for_each将每个元素乘以2,并将结果存储在原始容器中。注意,Lambda表达式使用引用int &i来修改容器中的元素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券