简体   繁体   English

以相反的顺序将一个向量复制到另一个向量

[英]Copy a vector to another vector in reverse order

I am new in C++.我是 C++ 新手。
I need to copy a vector in reverse order to another vector.我需要将一个向量以相反的顺序复制到另一个向量。

Here's how i did it :我是这样做的:

int temp[] = {3, 12, 17};

vector<int>v(temp, temp+3);

vector<int>n_v;

n_v=v;
reverse(n_v.begin(), n_v.end()); //Reversing new vector

Is there any simple way to copy a vector in reverse order to another vector in STL?是否有任何简单的方法可以将一个向量以相反的顺序复制到 STL 中的另一个向量?

只需这样做:

vector<int>n_v (v.rbegin(), v.rend());

您可以使用reverse_iterator

std::vector<int> n_v(v.rbegin(), v.rend());

From C++20, the views can be used.从 C++20 开始,可以使用视图。

std::vector v = { 1,2,3,4,5,6,7,8 };
auto result = v | std::views::reverse ;

Here the result can be directly iterated 8 7 6 5 4 3 2 1 .这里的结果可以直接迭代8 7 6 5 4 3 2 1

But if still need a vector但是如果仍然需要一个向量

std::vector rev_v(std::ranges::begin(result), std::ranges::end(result));

The advantage of these viewer adapters is, we can chain up multiple requirements.这些查看器适配器的优点是,我们可以链接多个需求。

For example, if the requirement says, reverse the vector, get the first four squaring them.例如,如果要求说,反转向量,得到前四个平方。 We can do this in one statement.我们可以在一个语句中做到这一点。

auto result = v | std::views::reverse | std::views::take(4) | std::views::transform([](int i) { return i * i; });

The output is 64 49 36 25输出为64 49 36 25

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM