配对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)
由于 i
从 1
开始,您插入地图的第一个值将为 '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";
}
我不知道如何在下面的代码中包含一张地图或一对地图,以便以 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)
由于 i
从 1
开始,您插入地图的第一个值将为 '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";
}