当前位置:  开发笔记 > 编程语言 > 正文

如何初始化div_t对象?

如何解决《如何初始化div_t对象?》经验,为你挑选了1个好方法。

因此,从div函数返回的成员的顺序似乎是实现定义的.

quot1 成员或者是rem

让我们说我做的是这样的:

generate(begin(digits), end(digits), [i = div_t{ quot, 0 }]() mutable {
    i = div(i.quot, 10);
    return i.rem;
})

当然这里的问题是我不知道我是初始化i.quot还是i.rem在我的lambda捕获中.是否i采用div(quot, 1)唯一的跨平台方式来实现这一目标?



1> 小智..:

你没有指定成员的顺序是对的.该定义继承自C,它明确指出它是(强调我的):

7.20.6.2 div,ldiv和lldiv函数

3 [...]结构应包含(以任何顺序)成员quot(商)和rem(其余),每个成员与参数numer和类型具有相同的类型denom.[...]

在C中,订单未指定的事实并不重要,并且具体包括以下示例div_t:

6.7.8初始化

34示例10可以将结构成员初始化为非零值,而不依赖于它们的顺序:

div_t answer = { .quot = 2, .rem = -1 };

不幸的是,C++从未采用过这种语法.

我可能会在辅助函数中进行简单的赋值:

div_t make_div_t(int quot, int rem) {
  div_t result;
  result.quot = quot;
  result.rem = rem;
  return result;
}

对于普通int值,无论您使用初始化还是赋值都不重要,它们具有相同的效果.

您的分区1也是一个有效的选项.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有