尝试编写我自己的反向函数

Trying to write my own reverse function

本文关键字:函数 自己的 我自己      更新时间:2023-10-16

我正在尝试编写自己的反向算法来反转元素序列的顺序。我只使用"第一个"和"限制",这就是函数将作为参数的全部内容。是否可以编写一个函数来反转元素序列的顺序,其中第一个是最后一个,第二个是倒数第二个。.等。我尽量不使用临时向量来存储元素。这可能吗?如果我的问题中有任何不清楚的地方,请告诉我。 谢谢!我正在使用c ++ 11,这就是我到目前为止所拥有的。不多。如果我不想使用临时向量,我真的不知道该使用什么逻辑。

template<typename Iter>
void reverse(Iter first, Iter last)
{
}

int main()
{
    std::vector<int> vector = {1,2,3,4,5};
    std::cout << reverse(vector.begin(),vector.end());
} 

想想你如何手动执行此操作。将五张扑克牌放在桌子上:

A K Q J 10

现在,您希望就地颠倒顺序。您希望开头是 10,最后是 Ace。所以交换它们:

10 K Q J A

现在交换国王和杰克:

10 J Q K A

你的名单被颠倒了!

该通用算法适用于任何大小的列表。我会把编码留给你。

关于解决这些类型问题的一点提示:不要试图在计算机上解决它。相反,建立一个物理模型(如扑克牌(,并考虑如何在没有计算机的情况下解决问题。你会惊讶于这种方法有多频繁,而且你做得越频繁,你就越擅长它。

算法设计与编码无关。算法设计是关于提出解决问题的步骤。有了方法后,编写代码来实现解决方案。

使用 std::iter_swap 应该很容易让你做到这一点。