编写一个功能,该函数将使用框架交换两个整数
Write a function that will swap two integers using refrences
这是一个特别奇怪的问题,但是我试图编写一个函数,可以交换两个整数的值而无需使用引用或'&''。我看不出这是怎么可能的。这是我到目前为止所拥有的。
void swap (int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
这通常是我这样做的方式,但是由于整数没有永久改变,所以我不知道我在不参考的情况下会这样做。有什么建议吗?
谢谢!
您应该更正问题标题。它说"使用参考"。这显然与您的意思相反。
假设:
- 确实不允许参考和指针,夸大任何包装的技巧
- 您想要的运行时交换是您想要的 - 而不是编译时间模板骗局
- 没有类,因为那会很琐碎
我能想到一个完全可怕的解决方案。使您的INT全球群体。
荒谬的_swap.hpp
#ifndef RIDICULOUS_SWAP_HPP
#define RIDICULOUS_SWAP_HPP
extern int first;
extern int second;
void swap_ints();
#endif // RIDICULOUS_SWAP_HPP
荒谬的_swap.cpp
int first = 0;
int second = 0;
void swap_ints()
{
auto tmp = first;
first = second;
second = tmp;
}
main.cpp
#include "ridiculous_swap.hpp"
#include <iostream>
int main()
{
first = 23;
second = 42;
std::cout << "first " << first << " second " << second << "n";
// prints: first 23 second 42
swap_ints();
std::cout << "first " << first << " second " << second << "n";
// prints: first 42 second 23
}
这对任何事情都没有用,但是它可以在不使用参考或指针的情况下交换两个整数。
有一个旧技巧可以交换两个类似整数的变量而不使用临时变量:
void swap(int& a, int& b)
{
a ^= b;
b ^= a; // b ^ (a ^b) = a
a ^= b; // (a ^ b) ^ a = b
}
相关文章:
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- C++嵌套if语句,基本货币交换
- shell排序中的交换和比较
- catch框架有没有办法比较流或文件
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 通过交换元素使数组相同
- 使用Qt框架在c ++类中创建API调用
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 交换运算符 + 重载会导致无限递归
- 如何在ECS框架中更新组件数据和通知系统
- 为什么 std::reduce 需要交换性?
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 用于C++的静态二进制检测或二进制重写工具和框架
- 复制和交换习惯用法与移动操作之间的交互
- GoogleMock是否仍然打算与任何测试框架一起使用?
- C++ - 没有自定义交换功能的移动分配运算符?
- 带有框架的 QGraphicsTextItem 的 QPropertyAnimation 会使文本抖动
- 编写一个功能,该函数将使用框架交换两个整数
- DirectX框架无法创建交换链和设备