有没有一种简单的方法来填充一个二维
在我的Rust项目中,我尝试填充一个类似的映射表:
HashMap
?在 C++ 中,我可以做一些类似于以下方式的操作:std::unordered_map<int,std::unordered_map<int,int>> 2dmap;
//...
2dmap[0][0] = 0;
2dmap[0][1] = 1;
//...
在我的Rust项目中,我尝试填充一个类似的映射表:
let mut map: HashMap<i32, HashMap<i32, i32>> = HashMap::new();
//...fill the hash map here.
我能想到的唯一方法是构建每个子地图,然后将它们移动到超级地图中,类似于以下代码:
let mut sub1: HashMap<i32, i32> = HashMap::new();
sub1.insert(0, 0);
sub1.insert(1, 1);
let mut map: HashMap<i32, HashMap<i32, i32>>::new();
map.insert(0, sub1);
有没有更简洁的方法来完成这个任务?
以上代码是我实际使用情况的简化版本,其中使用枚举作为 HashMap
的索引:
enum Example {
Variant1,
Variant2,
//...
}
所有变量都没有值。我正在使用这种语法从我的HashMap
中查找:
let value = map[Example::Variant1][Example::Variant2];
HashMap<(i32,i32),i32>
呢? - AlecHashMap<(example, example),i32>
。您真的需要仅使用第一个example
进行查找吗?如果不需要,应该使用元组... - AlecHashMap
开销,每个都分配比它们需要的更多的内存,并且只需要在表中查找一次,而不是两次。 - Alec