std :: vector作为std :: set和std :: unordered_set中的键

时间:2015-07-21 15:16:05

标签: c++ c++11 boost vector stl

我正在编写一个程序来评估棋盘游戏(即othello)中的大量头寸。我的董事会代表是std::vector。由于同一位置在处理过程中可能会出现更多次,因此我使用std::set<std::vector>来存储检查位置。

就性能而言,我不知道是否更倾向于使用std::set(因为{{1>}实现了所有需要的运算符而导致本地)或{ {1}}具有良好的哈希功能(即std::vector)。

另外还有其他好的解决方案可以达到同样的目标吗? (可能是不同的电路板表示[确定可用的位板]或不同的数据结构?)

编辑**************************************编辑

这是获取电路板的伪代码:

std::unordered_set

1 个答案:

答案 0 :(得分:1)

Why on earth would anyone use set instead of unordered_set?

what is the difference between set and unordered_set in C++?

基本上:除非您关注值的顺序,否则您应该使用unordered_set。

但至于所有其他性能问题:如有疑问 - >开始测量。 实施&#34; less&#34;并且&#34;哈希&#34;,然后在两个类中尝试并检查哪个表现更好(注意:在这种情况下,你还没有几乎相同的API。所以它不应该带你去很长时间来换班考试)