我目前正在使用AI编写toe程序,我在翻译这一行代码(python)时遇到了一些困难:
RANKS = dict([(4,3), # center = 3
(0,2),(2,2),(6,2),(8,2), # corners = 2
(1,1),(3,1),(5,1),(7,1)]) # sides = 1进入C++
有什么建议吗?
发布于 2014-12-28 05:59:52
C++中最接近的匹配将是一个std::unordered_map。这是一个哈希表,将int键映射到int值。
#include <unordered_map>
std::unordered_map<int, int> RANKS = {
{ 4, 3 },
{ 0, 2 }, { 2, 2 }, { 6, 2 }, { 8, 2 },
{ 1, 1 }, { 3, 1 }, { 5, 1 }, { 7, 1 }
};例如,可以使用operator[]访问元素
std::cout << RANKS[0] << std::endl; // prints "2"注意,C++标准库还有std::map类模板,它允许您创建一个类似但有序的查找表std::map<int, int>,具有对数查找和插入复杂性。但是python dict是哈希表,因此unordered_map在行为上更接近于匹配。
发布于 2014-12-28 06:10:27
您可以为此使用一个映射或unordered_map (它们会工作得很好),但考虑到您的键是一组密集的整数(即从0到N的所有整数),有更好的选择。
我可能会用std::array代替。看起来会是这样的:
std::array <char, 9> vals = { 2, 1, 2, 1, 3, 1, 2, 1, 2 };这提供了几乎相同的语法和可观察的行为,但通常也会节省相当多的内存,可能还会节省CPU时间。
发布于 2014-12-28 05:57:24
在C++中,这将是一个std::unordered_map
#include <unordered_map>
std::unordered_map<int, int> dict
{
{
{ 4, 3 },
{ 0, 2 }, { 2, 2 }, { 6, 2 }, { 8, 2 },
{ 1, 1 }, { 3, 1 }, { 5, 1 }, { 7, 1 }
}
};https://stackoverflow.com/questions/27674009
复制相似问题