配对cpp或使用地图填充打印

Pair cpp or use a map to fill and print

我不知道如何在下面的代码中包含一张地图或一对地图,以便以 A:1 B:2 C:3

格式打印列表
#include <iostream>
using namespace std;
#include <map>
#include <string>

int main() {
    // your code goes here
    char letter = 'A';
    typedef pair<char, int> LettreValues;
    for (int i = 1; i < 27; ++i)
    {       
        LettreValues[letter]=i;
        static_cast<char>(letter + 1);
    }
    for(auto elem : LettreValues)
    {
       std::cout << elem.first << " " << elem.second.first << " " << elem.second.second << "\n";
    }

    return 0;
}

尝试使用 std::make_pair 插入对,如下所示。

char letter = 'A';
    typedef pair<char, int> lettervalues;   
    for(int i = 1;i<27;i++)
    {
        lettervalues l = std::make_pair<char, int>(letter,i);
        letter = static_cast<char>(letter + i);
    }

你做错了很多事情。

char letter = 'A';

到目前为止还不错。

typedef pair<char, int> LettreValues;

现在你已经南下了。您已经为 std::pair 定义了类型别名 ('typedef'),名为 "LettreValues".

但 LettreValues 是一种类型 - 不是该类型的实例。

for (int i = 1; i < 27; ++i)

由于 i1 开始,您插入地图的第一个值将为 'A' + 1。

LettreValues[letter]=i;

这试图将 LettreValues 用作变量,但事实并非如此;它试图将它用作地图,不是吗 - 它是一对。

static_cast<char>(letter + 1);

这会将字母加一,将其转换为字符,然后将其丢弃。

我想也许你的意图是这样的:

// Declare an alias for std::map<char, int>.
using LettreValues = std::map<char, int>;
// Now declare a variable of this type
LettreValues letterValues;

// the type alias step is completely optional, we
// could have just written
// std::map<char, int> letterValues;

for (int i = 0; i < 26; ++i) {
    letterValues[letter] = i;
    letter++;
}

for (auto& el : letterValues) {
    std::cout << el.first << " " << el.second << "\n";
}

现场演示:http://ideone.com/7ZA5Bk