gpt4 book ai didi

枚举的 C++ 矩阵

转载 作者:行者123 更新时间:2023-11-30 02:18:50 25 4
gpt4 key购买 nike

我有一个枚举定义为

enum my_type_t {
UNKNOWN, TYPE1, TYPE2
};

我想声明一个矩阵,其中两个维度 num_of_edgesnum_of_nodes 由用户在运行时提供。我还想通过引用被调用函数来传递矩阵。

我已将矩阵声明为

vector< vector<my_type_t> > my_matrix(num_of_edges, vector<my_type_t> (num_of_nodes, UNKNOWN));

我是这样从main传过来的

main () {
int edge1 = 5;
int node1 = 10;
my_function(i, j, my_matrix);
i = 12;
j = 4;
my_function(i, j, my_matrix);
}

my_function 的声明是

void my_function(int i, int j, vector< vector<my_type_t> >& my_matrix) {
// some code
if (my_condition == true)
my_matrix[i][j] = TYPE1;
else
my_matrix[i][j] = TYPE2;
// some other code
}

我收到以下编译器错误:

no known conversion for argument 4 from std::vector<std::vector<my_type_t> >’ to ‘int&’

请帮忙。

最佳答案

您可以像这样创建一个二维 vector :

size_t num_rows = 10;
size_t num_cols = 20;

std::vector<std::vector<my_type_t>> matrix(num_rows, std::vector<my_type_t>(num_cols));

为了拥有矩形数据结构,您需要使用内部 vector 的拷贝来初始化外部 vector 。这样做的问题是不能保证 vector 的所有长度都保持不变。因此,将其包装到一个类中以强制执行您想要的不变量可能是明智的。

或者,您可以使用 Boost multi_array,它使用更好的 API 处理嵌套的 std::vector

关于枚举的 C++ 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51807633/

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