变换-一种变异序列算法 < >我知道C++中的代码>变换< /C>算法是一个突变序列算法< /C>。但我从未见过有人使用transform来突变序列。每当我在互联网上搜索样本代码时,我得到的是与每个算法类似的变换算法

变换-一种变异序列算法 < >我知道C++中的代码>变换< /C>算法是一个突变序列算法< /C>。但我从未见过有人使用transform来突变序列。每当我在互联网上搜索样本代码时,我得到的是与每个算法类似的变换算法,c++,algorithm,stl,transform,C++,Algorithm,Stl,Transform,请提供一个链接或示例,在这里我可以理解变异序列的性质 编辑:当我通过时,我变得更加困惑 它说每个都是一个非修改序列算法。因此,我可以为每个修改元素,而不是容器的结构。提供的答案是否不正确。如果for_each也可以修改元素,我们可以用transform替换for_each,并且不需要for_each算法,只是它的实现可能很简单 变异序列算法意味着该算法将更改(修改)其工作的容器。在下面的示例中,修改了std::vector类型的容器foo std::string s("hello"); std:

请提供一个链接或示例,在这里我可以理解变异序列的性质

编辑:当我通过时,我变得更加困惑
它说每个都是一个
非修改序列
算法。因此,我可以为每个修改元素,而不是容器的结构。提供的答案是否不正确。如果
for_each
也可以修改元素,我们可以用
transform
替换
for_each
,并且不需要
for_each
算法,只是它的实现可能很简单

变异序列算法意味着该算法将更改(修改)其工作的容器。在下面的示例中,修改了
std::vector
类型的容器
foo

std::string s("hello");
std::vector<int> foo;
std::transform(s.begin(), s.end(), back_inserter(foo), ::toupper);
std::cout << std::string(foo.begin(), foo.end());
std::string s(“hello”);
std::矢量foo;
std::transform(s.begin(),s.end(),back_inserter(foo),::toupper);

这里是一个简单的例子

#include <iostream>
#include <algorithm>
#include <iterator>

int main() 
{
    int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;

    std::transform( std::begin( a ), std::end( a ), std::begin( a ),
                    []( int x ) { return x * x; } );

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}
使用算法
std::for_each

#include <iostream>
#include <algorithm>
#include <iterator>

int main() 
{
    int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;

    std::for_each( std::begin( a ), std::end( a ),
                   []( int &x ) { x = x * x; } );

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}
#包括
#包括
#包括
int main()
{
INTA[]={1,2,3,4,5,6,7,8,9,10};

for(int x:a)std::cout这两个链接是不可访问的。在上面的示例中,如果我创建自己的toupper函数并传入每个函数,它会执行相同的操作,不是吗?@在您的地理位置中,可能禁止使用有意义的链接。
#include <iostream>
#include <algorithm>
#include <iterator>

int main() 
{
    int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;

    std::for_each( std::begin( a ), std::end( a ),
                   []( int &x ) { x = x * x; } );

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}