简单地处理长代码行

大赫

此代码将从int(51中的0)开始以字符串形式(Kh,6c,5h等)列出卡片组,反之亦然。

我已经为它编写了代码,但是看起来很长。有没有更有效的方式来编写此代码?

我也想这样做,将字符串发送到函数并获取一个整数。

std::string Card::getString(int card) {
    std::string cardstring;

    switch (card) {

    case 0:
        return "2c";
    case 1:
        return "3c";
    case 2:
        return "4c";
    case 3:
        return "5c";
    case 4:
        return "6c";
    case 5:
        return "7c";
    case 6:
        return "8c";
    case 7:
        return "9c";
    case 8:
        return "Tc";
    case 9:
        return "Jc";
    case 10:
        return "Qc";
    case 11:
        return "Kc";
    case 12:
        return "Ac";
    case 13:
        return "2d";
    case 14:
        return "3d";
    case 15:
        return "4d";
    case 16:
        return "5d";
    case 17:
        return "6d";
    case 18:
        return "7d";
    case 19:
        return "8d";
    case 20:
        return "9d";
    case 21:
        return "Td";
    case 22:
        return "Jd";
    case 23:
        return "Qd";
    case 24:
        return "Kd";
    case 25:
        return "Ad";
    case 26:
        return "2h";
    case 27:
        return "3h";
    case 28:
        return "4h";
    case 29:
        return "5h";
    case 30:
        return "6h";
    case 31:
        return "7h";
    case 32:
        return "8h";
    case 33:
        return "9h";
    case 34:
        return "Th";
    case 35:
        return "Jh";
    case 36:
        return "Qh";
    case 37:
        return "Kh";
    case 38:
        return "Ah";
    case 39:
        return "2s";
    case 40:
        return "3s";
    case 41:
        return "4s";
    case 42:
        return "5s";
    case 43:
        return "6s";
    case 44:
        return "7s";
    case 45:
        return "8s";
    case 46:
        return "9s";
    case 47:
        return "Ts";
    case 48:
        return "Js";
    case 49:
        return "Qs";
    case 50:
        return "Ks";
    case 51:
        return "As";
    }
    return cardstring;}

谢谢

本杰明·林德利
std::string get_card_string(int card)
{
    if (card >= 0 && card < 52)
    {
        std::string s(2,' ');
        s[0] = "23456789TJQKA"[card % 13];
        s[1] = "cdhs"[card / 13];
        return s;
    }
    return "";
}

反向过程要复杂一些。如果我考虑了一会儿,我可能会想出一个更聪明的方法,但是显而易见的选择是这样的:

std::unordered_map<std::string, int> initialize_card_map()
{
    std::unordered_map<std::string, int> m;
    for (int i=0; i<52; ++i)
        m[get_card_string(i)] = i;
    return m;
}

int get_card_number(std::string const & card_string)
{
    static std::unordered_map<std::string, int> const m = initialize_card_map();
    auto it = m.find(card_string);
    if (it != m.end())
        return it->second;

    return ??? value not found
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

优雅地处理要由PHP处理的大型MySQL行

来自分类Dev

如何从C ++代码优雅地处理C回调?

来自分类Dev

我如何有效地处理行

来自分类Dev

如何处理Python中的长行?

来自分类Dev

编写长行代码的Pythonic方法

来自分类Dev

C#长行代码格式

来自分类Dev

为什么简单的C ++源文件的预处理文件包含数千行代码?

来自分类Dev

Inno Setup和VC Redistributable,并优雅地处理退出代码3010

来自分类Dev

您将如何优雅地处理此代码段以在目录中留出空格?

来自分类Dev

AutoMapper优雅地处理NULL

来自分类Dev

让Tee更好地处理运输

来自分类Dev

哪个更好地处理对象?

来自分类Dev

如何处理比Python中的Curses窗口长的行?

来自分类Dev

如何用恒定的内存处理两条长行?

来自分类Dev

这三元代码是否可以安全地处理JavaScript中未定义的内容?

来自分类Dev

如何在NetLogo中将长代码行分成多行?

来自分类Dev

我如何浓缩此简单的“ if”行代码?

来自分类Dev

创建简单的代码以将我的数据集从R转换为宽到长

来自分类Dev

创建简单的代码以将我的数据集从R转换为宽到长

来自分类Dev

使用HTML代码处理XML的简单方法?

来自分类Dev

我的内核卡住了处理简单的代码(网络抓取)

来自分类Dev

简单的jQuery代码不起作用(处理对象)

来自分类Dev

如何使用简单代码处理和推送多个目录

来自分类Dev

我有一个我不太明白的长代码,请帮助将代码分解成更简单的语句

来自分类Dev

Java适当地处理异常

来自分类Dev

巧妙地处理Scala中的Option [T]

来自分类Dev

Rails可以优雅地处理超时的会话?

来自分类Dev

如何可靠地处理队列?

来自分类Dev

cURL超时,可以优雅地处理吗?

Related 相关文章

热门标签

归档