C++ 结构初始化数组

标签 c++ arrays struct initialization

我不太习惯用 C++ 编码,这可能是一个简单的问题,我无法获得正确的语法。

我基本上想要实现的是,从一个声明结构数组(未指定大小)的方法,我调用一个传递该数组的方法。该方法应初始化数组的值。我试图让一个简单的代码工作但出现错误。下面的一段代码给我一个编译错误。有人可以指出如何实现这一目标吗?

struct ABC
{
int a;
int b;
};

void test(ABC * a)
{
a[] = {{2,3},{4,5}};
}

int main() {
    ABC arr[2];
    test(arr);
}     

编辑:
以下工作正常,但我希望初始化在一行中工作。

struct ABC
{
int a;
int b;
};

void test(ABC *a)
{
a[0].a = 2;
a[0].b = 3;
a[1].a = 4;
a[1].b = 5;
}

int main() {
    ABC arr[2];
    test(arr);
}

最佳答案

您可以使用这样的设置,利用 C++ 标准库。使用 -std=c++11 标志编译它以允许我在 push_back 中进行的初始化:

#include <vector>
#include <iostream>

struct ABC
{
    int a;
    int b;
};

void test(std::vector<ABC>& a)
{

    a.push_back({2,3});
    a.push_back({4,5});
}

int main()
{
    std::vector<ABC> arr;
    test(arr);

    // Test the outcome...
    std::cout << "The size is: " << arr.size() << std::endl;
    for (ABC& a : arr)
        std::cout << "Element (" << a.a << "," << a.b << ")" << std::endl;

    return 0;
}

关于C++ 结构初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33133187/

相关文章:

c++ - 添加 boost 库作为 Bazel 依赖项 c++

c++ - 如何使用 OpenCL C++ 绑定(bind)获得最大的全局工作量?

python - numpy 数组,即 (n,1) 和 (n,)

arrays - 如何在 Swift 中将字符串数组转换为字符串

Java 二维数组逻辑实现

struct - 在声明结构字段对象类型时,我必须在这里使用什么样的生命周期参数

c - 为列表中的每个元素分配一个指针

c++ - 在分隔逗号时使用 getline() 不起作用

c++ - 为什么 lock_guard 可以通过 unique_lock 得到一个已经锁定的互斥体?

c - 如何使用 strtok() 从文本文件中读取并创建结构?