如何在 CPP 中创建这样的列表?

how do I create a list like this in CPP?

本文关键字:列表 创建 CPP      更新时间:2023-10-16

这是我的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%

与 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++看到单引号(用于单字符(和双引号(用于字符串(之间的区别。

当然你可以喜欢这个:

#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;
}