gpt4 book ai didi

c++ - 反向复制数组

转载 作者:太空狗 更新时间:2023-10-29 20:10:50 24 4
gpt4 key购买 nike

我想以相反的顺序复制一个数组到同一个数组的末尾,同时改变值的代数符号。

是这样的:

void foo()
{
std::vector<int> vec;
for(int = 0; i < 5; i++)
{
vec.push_back(i);
}

//Now i want the values in vec to be copied to the end in reverse order.
//I would like to have something like that :
std::copy(std::end(vec), std::begin(vec), std::back_inserter(vec))

//so now vec should look like: 0 1 2 3 4 4 3 2 1 0
//But I want: 0 1 2 3 4 -4 -3 -2 -1 -0

}

是否已经存在一个 std 标准函数,我可以调整它来做我想做的事情(比如 partition_copy 或其他东西),或者我是否必须使用我自己的东西,比如 std::for_each 和适当的 lambda 函数?

最佳答案

您可以将 std::transform 与反向迭代器结合使用:

vec.reserve(2 * vec.size());  // guarantee iterator validity

std::transform(std::rbegin(vec), std::rend(vec),
std::back_inserter(vec), [](int n) { return -n; });

关于c++ - 反向复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36596631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com