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

chr*_*ear 1 c++ python arrays return list

这是我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%
Run Code Online (Sandbox Code Playgroud)

Yks*_*nen 6

与Python最相似的类型dictstd::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%";
}
Run Code Online (Sandbox Code Playgroud)

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