相关疑难解决方法(0)

为什么std :: map实现为红黑树?

为什么std::map实现为红黑树

那里有几个平衡的二叉搜索树(BST).选择红黑树的设计权衡是什么?

c++ dictionary stl binary-search-tree data-structures

179
推荐指数
4
解决办法
8万
查看次数

C++ STL Map vs Vector speed

在我的实验性编程语言的解释器中,我有一个符号表.每个符号由一个名称和一个值组成(值可以是:例如:string,int,function等类型).

首先,我用一个向量表示该表,并通过符号迭代检查给定的符号名称是否合适.

然后,我使用地图,在我的情况下map<string,symbol>,总是比迭代迭代矢量更好,但是:

解释这部分有点难,但我会试试.

如果在我的语言的程序中第一次检索变量,当然必须找到它在符号表中的位置(现在使用向量).如果我每次执行该行时都会迭代向量(想想一个循环),那么它将非常慢(因为它目前是,几乎和microsoft的批处理一样慢).

所以我可以使用地图来检索变量: SymbolTable[ myVar.Name ]

但想想以下内容:如果第一次找到仍使用向量的变量,我可以将它的精确整数位置存储在向量中.这意味着:下次需要它时,我的解释器知道它已被"缓存"并且不会在符号表中搜索它,而是执行类似的操作SymbolTable.at( myVar.CachedPosition ).

现在我的(相当难的?)问题:

  • 我应该使用向量作为符号表,同时缓存向量中变量的位置吗?

  • 我应该使用地图吗?为什么?[]运算符的速度有多快?

  • 我应该使用完全不同的东西吗?

c++ stl vector map

19
推荐指数
2
解决办法
4万
查看次数