c – 反向复制数组
发布时间:2020-12-16 10:02:18 所属栏目:百科 来源:网络整理
导读:我想以相反的顺序将数组复制到同一个数组的末尾,同时更改值的代数符号. 它是这样的: void foo(){ std::vectorint 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
我想以相反的顺序将数组复制到同一个数组的末尾,同时更改值的代数符号.
它是这样的: 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; }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |