gpt4 book ai didi

c++ - 如何使用初始化列表?

转载 作者:搜寻专家 更新时间:2023-10-31 00:59:48 25 4
gpt4 key购买 nike

编辑:不能使用 vector

所以现在我正在练习类(class)和标题。我需要做的一件事是创建一个可以使用初始化列表初始化二维数组的构造函数。

我已经使用这个网站来尝试弄清楚如何做到这一点:http://en.cppreference.com/w/cpp/utility/initializer_list

但这对我一点帮助都没有。

到目前为止,我已经有了构造函数原型(prototype),以及初始化列表的 include 和 typedef:

#include <initializer_list>
typedef initializer_list<initializer_list<double>> i_list;

Matrix::Matrix(const i_list & list)
{}

我需要能够执行类似 x = {{1,2},{2,4}} 的操作,这应该使我能够创建我的 Matrix --x--- 而无需必须调用我的 .at 函数。

编辑:

我尝试执行以下代码,但遗憾的是它确实会导致错误。

Matrix::Matrix(const i_list & list)
{

lst.size(list.size());
for (auto const& row: list)
{

(lst.begin(row),lst.end(row));
}
}

lst 在我的头文件中定义为:I_list lst。 I_list 因为它是简写。

最佳答案

你可以这样做

class Matrix
{
public:
Matrix(const i_list& lst)
{
values.reserve(lst.size());
for (auto const& row : lst)
{
values.emplace_back(std::begin(row), std::end(row));
}
}

std::vector<std::vector<double>> values;
};

您可以使用 std::vector 而不是原始数组。 std::vector 的可用构造函数之一采用 beginend 迭代器,它们可用于 std::initializer_list.

Working demo

int main()
{
Matrix x = {{1,2},{2,4}};

for (auto const& row : x.values)
{
for (double value : row)
{
std::cout << value << " ";
}
std::cout << std::endl;
}
}

输出

1 2 
2 4

关于c++ - 如何使用初始化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32701877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com