我正在尝试编写自己的反向算法来反转元素序列的顺序。我只使用'first'和'limit',所有函数都将作为参数。是否有可能编写一个函数来反转元素序列的顺序,其中第一个是最后一个,第二个是倒数第二个......等等。我试图不使用临时向量来存储元素。这可能吗?如果我的问题中有任何不清楚的地方,请告诉我。 谢谢! 我正在使用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());
}
答案 0 :(得分:0)
考虑一下如何手动执行此操作。在桌子上放五张扑克牌:
A K Q J 10
现在,您希望就地撤销订单。你想要10开头,最后是Ace。所以交换它们:
10 K Q J A
现在交换国王和杰克:
10 J Q K A
你的清单正好相反!
该通用算法适用于任何大小的列表。我会把编码留给你。
解决这些类型问题的一点提示:不要试图在计算机上解决它。相反,建立一个物理模型(如扑克牌),并思考如何在没有计算机的情况下解决问题。你会惊讶地发现这种情况经常发生,你做的越频繁,就会越好。
算法设计与编码无关。算法设计是关于提出解决问题的步骤。有了方法之后,然后就会编写代码来实现解决方案。
答案 1 :(得分:-1)
使用std::iter_swap
应该可以轻松地执行此操作。