【问题标题】:Setup values of an array within a struct在结构中设置数组的值
【发布时间】:2019-03-11 13:57:26
【问题描述】:

我想为结构中的向量/数组赋值。类似于以下的东西。但是,以下代码会出错,并且无法编译。

struct Params
{

    float a = 1.132;
    vector<float> v(100);

    for (int n = 0; n < 100; ++n)
    {
        v[n] = n*a;
    }
};

如何用我想填充的值填充v,并将v 保存在结构中?谢谢。

【问题讨论】:

  • 这与您的previous question 有何不同?
  • @Someprogrammerdude 我试图将前一个放入结构中,但遇到了问题,正如这篇文章所述。这次是在一个结构内。谢谢。
  • 使用构造函数
  • @Jahid 我也这么认为。也许想发布一些示例代码?谢谢。
  • @NickXTsui 你真的需要找一本 C++ 书籍,并阅读构造函数是什么。很难想象任何比 C++ 更基础的东西。如果你已经走到了这一步,但你不知道构造函数是什么,那么你就走错了路。

标签: c++ arrays vector struct


【解决方案1】:

将代码放入这样的构造函数中:

Params() {
    v.resize(100);
    for (int n = 0; n < 100; ++n)
    {
        v[n] = n * a;
    }
}

这样,当您创建 Params 时,它已经使用您的值进行了初始化:

Params a;
std::cout << a.v[10] << std::endl;

例如,这将打印11.32

【讨论】:

  • "像这样把代码放到构造函数中:"只是想知道构造函数在哪里?
  • 构造函数是Params() {}形式的函数。你可以在这里找到详细的解释:geeksforgeeks.org/constructors-c
  • 完美。谢谢!
  • 如果我想做很多事情怎么办,然后在构造函数中放很多代码是丑陋的。我可以在构造函数之外定义一堆函数,然后在构造函数中调用这些函数吗?那我把所有这些功能放在哪里呢?谢谢。
  • 当然。您可以从构造函数调用类中的任何其他函数。您可以像任何其他函数一样将它们放在类中,在构造函数之前或之后(通常构造函数在前,然后是其他函数)。
【解决方案2】:

您可以将代码放在构造函数上(这是一个很好的解决方案)。 如果由于某种原因,您不想声明构造函数,则可以执行下一个解决方法:

struct Params {
    float a = 1.132f;
    std::vector<float> vec {
        [this] {
            std::vector<float> v(100);
            for (int n = 0; n < 100; ++n)
            {
                v[n] = n*this->a;
            }
            return v;
        }()
    };
};

Lambda 函数在“Params”实例化时被调用。

在我看来,为了清晰起见,最好使用构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2021-11-26
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多