尝试编写我自己的反向函数
Trying to write my own reverse function
我正在尝试编写自己的反向算法来反转元素序列的顺序。我只使用"第一个"和"限制",这就是函数将作为参数的全部内容。是否可以编写一个函数来反转元素序列的顺序,其中第一个是最后一个,第二个是倒数第二个。.等。我尽量不使用临时向量来存储元素。这可能吗?如果我的问题中有任何不清楚的地方,请告诉我。 谢谢!我正在使用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
应该很容易让你做到这一点。
相关文章:
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 在C++中,我可以在定义自己的复制构造函数后跳过定义赋值运算符吗?
- 在类自己的成员函数中构造类时,如何强制类模板参数推导?
- 在这种情况下,工会成员会调用自己的析构函数吗
- 您自己的类型的结构化绑定,不是结构或元组(通过公共成员函数)
- 我正在尝试在视觉工作室上创建自己的库/源函数
- 将自己的函数添加到 ifstream
- 在函数调用时C++多组参数及其自己的括号?
- 如何解决对自己的C++成员函数的未定义引用?
- C :基类调用自己的虚拟函数 - 一个反图案
- 自己的C++列表类实现(插入函数)出现问题
- 函数可以将指针返回其自己的类型
- 类中的枚举在调用自己的函数时不会改变
- GCC 或 Clang 关于函数参数在其自己的默认参数中的范围内的名称是否正确?
- 如何自己为我自己的shared_ptr实现实现别名构造函数
- 如何在我自己的类 Vector 中使用 Move 构造函数而不是 Move 赋值运算符
- G++ 切换为不包含自己的符号函数名称(和调试数据)-
- 在构造函数(C )中填写我自己的向量类
- 如何在 C++ 中从类成员函数自己的定义递归调用该函数