配对cpp或使用地图填写和打印

时间:2016-07-11 03:01:46

标签: c++ dictionary std-pair

我不知道如何在下面的代码中包含地图或一对,以http://my.app/api/users?id[]=1,2,3 格式打印一个列表

A:1 B:2 C:3

2 个答案:

答案 0 :(得分:0)

你做了很多错事。

char letter = 'A';

到目前为止一切顺利。

typedef pair<char, int> LettreValues;

现在你已经南下了。您已为std :: pair定义了一个类型别名(&#39; typedef&#39;),称为&#34; LettreValues&#34;。

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

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

由于i1开始,您在地图中插入的第一个值将是&#39; A&#39; + 1。

LettreValues[letter]=i;

这会尝试将LettreValues用作变量,而不是;它试图将它用作地图,这不是 - 它是一对。

static_cast<char>(letter + 1);

这会在信件中添加一个,将其转换为char,然后将其丢弃。

我想也许你打算这样的事情:

// 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

答案 1 :(得分:-1)

尝试使用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);
    }