这是一种未定义的行为吗?我可以在没有温度的情况下交换值吗?
Is it an undefined behavior? Could I exchange values without a temp?
我可以使用元组和领带交换两个变量吗?
int x, y;
....
std::tie(y, x) = std::make_tuple(x, y);
std::make_tuple
创建一个元组实例,参数的副本,因此使用它来赋值回原始变量没有问题。
然而,它不是惯用的,比简单地使用 std::swap
更迂回,即它不是人们期望的代码,所以我不会这样做。
关于效率,仅仅因为总是会出现这样的问题,这完全取决于编译器:只能说,如果它很重要,请测量。
std::make_tuple
交换使用临时元组,即元组。
要在不使用临时变量的情况下交换两个基本积分类型的变量的值,您可以使用旧的 XOR 技巧:
x ^= y;
y ^= x; // Sets y = original x value by cancelling the original y bits.
x ^= y; // Sets x = original y value by cancelling the original x bits.
这是为无符号类型明确定义的。如果
相关文章:
- 我可以有一个 ELI5 作为参考和指针以及何时使用它们吗?
- 我可以有条件地使用多个参数吗?
- 我可以有一个与另一个向量共享存储的向量
- 我可以有一个从外部不可见但未在标头中定义的静态友元函数吗?
- 我可以有常量参数包吗
- 我可以有一个模板函数指针的 std::vector 吗?
- 我可以有多个gl_array_buffer缓冲区吗?
- 如何在 C++ 控制台应用程序中将输入与输出分开?我可以有两个游标吗?
- 我可以有一个仅使用工厂方法创建的成员变量吗?
- 在c++中,我可以有一个只有在特定条件下才具有某些函数的类吗
- 我可以有模板实例化的副作用吗?
- 我可以有一个要实例化的模板列表,而无需事先实例化
- 我可以有一个异常的静态全局实例吗?
- 我可以有一个跳过索引的布尔值的单维数组吗?
- 我可以有一个C++映射,其中多个键引用该值而不使用指针吗
- 我可以有一个指向C++中函数的静态指针数组吗
- 我可以有条件地选择分配给哪个变量吗
- 我可以有任何方法来检测驱动程序签名策略状态吗?
- 我可以有一个函数/方法通过引用传递参数和重载通过值传递它在c++中
- 我可以有超过1个sf::Clock实例吗?(sf::Clock是怎么工作的?)