【发布时间】:2018-09-17 05:08:22
【问题描述】:
您好,
我正在用 C++ 编写一个程序,其中我使用 std::map 插入两个值(char,int),其中每个 char(a,b,c,d)都与它在字母系统中的出现有关(1 ,2,3,4),这样,如果我对字母进行排序,它们的数字也会被排序。我知道更好的方法是减去 ACSII 值和所有值,但这是更大代码的一部分,我对地图感兴趣。
现在,在我的程序中,用户以未排序的方式输入字符 {a, b, c},然后(在输入字符后)他们为每个 aphabet 分别输入他们之前输入的数字(类似于自定义字母系统)。
我知道如何在地图中使用
MyMap.insert(pair <char, int> ('a', 1));
但在这种情况下,用户先输入所有字符,然后输入所有数字,所以我不能使用 pair 功能。我也不想将值存储在数组中,然后在接收到 int 值后,将它们插入到地图中。我想知道是否有一种直接的方法可以先插入字符的值,然后再插入它们的相应值(如果可能,比插入 {char value, 0} 然后将 0 编辑为数字更好的方法。)。
非常感谢任何帮助!
【问题讨论】:
-
只插入
0作为整数值? -
不是,我的意思是因为他们先输入字符值,把它们存储在map中,int为0,然后修改为之后输入的数字
-
不,没有这样的方法。您需要插入完整的对。
-
不能先插入char的值,再从头加到int中
-
std::map(或std::unordered_map)中的每个元素都是一个pair。包含键 和 值的对。就是这样,这就是你必须忍受的“限制”。如果您不希望这样,那么std::map不适合您。