【问题标题】:how do I create a list like this in CPP? [closed]如何在 CPP 中创建这样的列表? [关闭]
【发布时间】:2020-03-19 13:56:24
【问题描述】:

这是我 11 年级的 cs 课。我正在创建一个将级别转换为百分比的程序。 这是我为我的 python 代码制作的列表,显示用户进入关卡时的百分比(例如 3+),但我想知道我是否可以在 C++ 中做类似的事情。

grade= {}
grade['R-'] = '0%'
grade['R'] = '30%'
grade['R+'] = '40%'
grade['1-'] = '50%'
grade['1'] = '53%'
grade['1+'] = '57%'
grade['2-'] = '60%'
grade['2'] = '63%'
grade['2+'] = '67%'
grade['3-'] = '70%'
grade['3'] = '73%'
grade['3+'] = '77%'
grade['4-'] = '80%'
grade['4'] = '87%'
grade['4+'] = '95%

【问题讨论】:

  • 使用std::map模板类型。
  • 提示:std::map,或者在本例中为std::map<std::string, std::string>,用于字符串到字符串的映射。
  • 链接,map
  • 我只想补充一点,在 Python 和 C++ 中为此选择数据结构并没有太大区别。你的 python 代码实际上是一个字典,而不是一个列表。在这种情况下,字典的另一个词是 hashmap。
  • @n314159 我只是在找这个词,谢谢!

标签: python c++ arrays list return


【解决方案1】:

与 Python 的 dict 最相似的类型是 std::unordered_map(元素的顺序是实现定义的)。
请注意,Python 3.7 保证保留 dict 的插入顺序,但 C++ 中没有标准实用程序提供此类功能(除非您愿意使用 std::vector<std::pair<...>>)。

std::map 保证键按一些 顺序排序(默认为operator <std::string 表示字典顺序,就像现实世界的字典一样)。

你可以这样使用它:

#include <unordered_map>
#include <string>

int main()
{
    std::unordered_map<std::string, std::string> grade;
    grade["R-"] = "0%";
    grade["R"] = "30%";
    grade["R+"] = "40%";
    grade["1-"] = "50%";
    grade["1"] = "53%";
    grade["1+"] = "57%";
    grade["2-"] = "60%";
    grade["2"] = "63%";
    grade["2+"] = "67%";
    grade["3-"] = "70%";
    grade["3"] = "73%";
    grade["3+"] = "77%";
    grade["4-"] = "80%";
    grade["4"] = "87%";
    grade["4+"] = "95%";
}

注意双引号 - C++ 看到单引号(用于单字符)和双引号(用于字符串)之间的区别。

【讨论】:

    【解决方案2】:

    当然你也可以这样:

    #include <iostream>
    #include <string>
    #include <map>
    using namespace std;
    void main()
    {
        map<string, string> grade;
        grade["R-"] = "0%";
        grade["R"] = "30%";
        grade["R+"] = "40%";
        grade["1-"] = "50%";
        grade["1"] = "53%";
        grade["1+"] = "57%";
        grade["2-"] = "60%";
        grade["2"] = "63%";
        grade["2+"] = "67%";
        grade["3-"] = "70%";
        grade["3"] = "73%";
        grade["3+"] = "77%";
        grade["4-"] = "80%";
        grade["4"] = "87%";
        grade["4+"] = "95%";
        cout << '{';
        for (auto item : grade) {
            cout << '\'' << item.first << ": '" << item.second << "', ";
        }
        cout << '}' << endl;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2021-11-03
      • 1970-01-01
      相关资源
      最近更新 更多