当前位置: 首页 > 编程笔记 >

C++ 使用结构

蔚弘量
2023-03-14
本文向大家介绍C++ 使用结构,包括了C++ 使用结构的使用技巧和注意事项,需要的朋友参考一下

示例

Astruct可用于捆绑多个返回值:

C ++ 11
struct foo_return_type {
    int add;
    int sub;
    int mul;
    int div;
};

foo_return_type foo(int a, int b) {
    return {a + b, a - b, a * b, a / b};
}

auto calc = foo(5, 12);
C ++ 11

代替分配给各个字段,可以使用构造函数来简化返回值的构造:

struct foo_return_type {
    int add;
    int sub;
    int mul;
    int div;
    foo_return_type(int add, int sub, int mul, int div)
    : add(add), sub(sub), mul(mul), div(div) {}
};

foo_return_type foo(int a, int b) {
     return foo_return_type(a + b, a - b, a * b, a / b);
}

foo_return_type calc = foo(5, 12);

该函数返回的单个结果foo()可以通过访问的成员变量来检索struct calc:

std::cout <<calc.add<< ' ' <<calc.sub<< ' ' <<calc.mul<< ' ' <<calc.div<< '\n';

输出:

17 -7 60 0

注意:当使用时struct,返回的值将组合在一个html" target="_blank">对象中,并且可以使用有意义的名称进行访问。这也有助于减少在返回值范围内创建的无关变量的数量。

C ++ 17

为了解压缩struct从函数返回的数据,可以使用结构化绑定。这会将外参数与内参数放在一个均匀的基础上:

int a=5, b=12;
auto[add, sub, mul, div] = foo(a, b);
std::cout << add << ' ' << sub << ' ' << mul << ' ' << div << '\n';

此代码的输出与上面的输出相同。在struct仍然使用从函数返回值。这使您可以单独处理字段。

 类似资料:
  • 问题内容: 我必须编写一个Java程序,该程序将接收来自网络的消息并将其内容显示给用户。问题是我收到的消息只是C结构的二进制转储。此外,有些消息来自小端机器,有些消息来自大端机器,而没有将字段转换为网络字节顺序。我拥有的一种方法是使用JNI并将c结构转换为一些XML字符串,然后将该XML字符串反序列化为Java Object。这是一项艰巨的工作,因为大约有122个不同的结构,每个结构都包含20多个

  • 问题内容: 简单地说,我有一个存储应用程序常量的结构,如下所示: 例如,可以通过调用在Swift代码中使用这些常量。但是在我的代码中,它还包含一些Objective- C类。所以我的问题是如何在Objective-C代码中使用这些常量? 如果这种声明常量的方法不好,那么在Swift和Objective-C代码中使用全局常量的最佳方法是什么? 问题答案: 可悲的是,你不能暴露,也不是Objectiv

  • 我现在正在实现模拟N体问题的Barnes-Hut算法。我只想问关于建筑树的部分。 我做了两个函数来为它构建树。 我递归地构建树,并在构建时打印每个节点的数据,一切看起来都是正确的,但当程序返回到主函数时,只有树的根和根的子节点存储值。其他节点的值没有被存储,这很奇怪,因为我在递归过程中打印了它们,它们应该被存储。 这是经过修改的代码的一部分,我认为问题可能在哪里: 下面是函数set_root_an

  • 本文向大家介绍c# ArrayList的使用方法小总结,包括了c# ArrayList的使用方法小总结的使用技巧和注意事项,需要的朋友参考一下 *** Source URL: http://i.yesky.com/bbs/jsp/view.jsp?articleID=889992&forumID=150 *** 1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说

  • 本文向大家介绍使用C#实现数据结构堆的代码,包括了使用C#实现数据结构堆的代码的使用技巧和注意事项,需要的朋友参考一下 一、 堆的介绍:   堆是用来排序的,通常是一个可以被看做一棵树的数组对象。堆满足已下特性:   1. 堆中某个节点的值总是不大于或不小于其父节点的值   任意节点的值小于(或大于)它的所有后裔,所以最小元(或最大元)在堆的根节点上(堆序性)。堆有大根堆和小根堆,将根节点最大的堆

  • 主要内容:1、定义结构体,2、结构体的特征,3、类与结构体在 C# 中,结构体也被称为结构类型(“structure type”或“struct type”),它是一种可封装数据和相关功能的值类型,在语法上结构体与类(class)非常相似,它们都可以用来封装数据,并且都可以包含成员属性和成员方法。 1、定义结构体 要定义一个结构体需要使用 struct 关键字,每个结构体都可以被看作是一种新的数据类型,其中可以包含多个成员(成员属性和成员方法),例如下面