起初,我用向量表示表格,并通过迭代符号来检查给定的符号名称是否匹配。
然后我想使用映射,在我的情况下是`map`,比一直迭代向量更好,但是:
这部分有点难以解释,但我会尝试。
如果在程序中第一次检索变量,当然必须找到其在符号表中的位置(现在使用向量)。如果每次执行该行时都要遍历向量,那么速度会非常慢(目前几乎和Microsoft的批处理一样缓慢)。
所以我可以使用映射来获取变量:`SymbolTable[ myVar.Name ]`
但请考虑以下内容:如果使用向量,第一次找到变量时,我可以将其精确的整数位置存储在向量中。这意味着:下次需要它时,我的解释器知道它已被“缓存”,不会搜索符号表,而是做类似于这样的操作:`SymbolTable.at( myVar.CachedPosition )`。
现在我的(相当困难的?)问题:
• 我应该使用带有在向量中缓存变量位置的向量作为符号表吗?
• 还是应该使用映射?为什么?[]运算符有多快?
• 我应该使用完全不同的东西吗?