[英]C++ matrix of enum
我有一個枚舉定義為
enum my_type_t {
UNKNOWN, TYPE1, TYPE2
};
我想聲明一個矩陣,其中兩個維度num_of_edges
和num_of_nodes
由用戶在運行時提供。 我還想通過引用傳遞矩陣來調用函數。
我已將矩陣聲明為
vector< vector<my_type_t> > my_matrix(num_of_edges, vector<my_type_t> (num_of_nodes, UNKNOWN));
我這樣從主要傳遞過它
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&’
請幫忙。
你可以像這樣創建一個二維向量:
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));
您需要使用內部向量的副本初始化外部向量,以便具有矩形數據結構。 這個問題是不能保證矢量的所有長度都保持不變。 因此,將它包裝到類中以強制執行所需的不變量可能是明智的。
或者,您可以使用Boost multi_array
,它使用更好的API處理嵌套的std::vector
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.