C++同时为变量赋值
C++ simultaneous assignment of values to variables
我需要在执行以下类型任务的 c++ 程序中编写某个代码段。
b:=a+b;
a:=a-b;
其中 := 运算符表示首先计算所有表达式右侧的值,然后将每个表达式左侧的变量等同于右侧的计算值。
例如,在上面的代码中,如果 a=5 和 b=3,我需要 a 和 b 的最终值分别为 8 和 2,而不是如果我执行正常分配我会得到的 8 和 -3。
您可以使用
std::tie()
和std::make_tuple()
:
std::tie(a, b) = std::make_tuple(a-b, a+b);
tie
创建引用元组,元组赋值等效于元素赋值。因此,这实际上与以下相同:
// create the right-hand-side-tuple
auto __tmp1 = a-b;
auto __tmp2 = a+b;
// assign to the left-hand-side references
a = __tmp1;
b = __tmp2;
但是由于这里的赋值在概念上是"原子的",你可以把它写在一行中——因为所有的操作(a-b
和a+b
)都是在赋值本身之前排序的。
您可以使用名称为 before
和 after
的结构来保存变量。然后,无论您有多少变量,都可以按如下方式使用代码:
after.a = before.a + before.b;
after.b = before.a - before.b;
然后,一旦计算完成,您可以通过以下语句移动所有新值:
before = after;
相关文章:
- 为"adjacent"变量赋值时出现问题
- 为什么我不能在返回 const 的布尔函数中为类成员变量赋值?C++
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 如何在不使用赋值运算符的情况下为动态变量赋值?
- 为什么我不能为变量赋值函数?
- 可视化的c++变量赋值使代码正常工作
- 如何为结构类型变量赋值
- 使用 boost python 从 c++ 为 python 中的类成员变量赋值
- QT变量赋值,<没有这样的值>,SIGSEGV
- C++:为全局类变量赋值
- 从类外部为类中的变量赋值
- 在 c++ 中为字符串变量赋值
- 为类中的私有静态变量赋值
- 使用类为变量赋值 (C++)
- 在编译时为变量赋值
- C ++变量赋值,这是正常的方式吗
- 在C++中为类变量赋值后声明类变量
- 了解工厂方法和静态变量赋值的返回值优化 (Visual Studio)
- 如何在 c++ 中从函数获取返回值而不为其变量赋值
- 简单的引用变量赋值导致对象的全局指针出现segfault