我正在尝试编写一个以整数作为键的映射,然后是通过标准输入提供给它的x个int值。这是我第一次使用地图,所以我遇到了几个问题,并且想知道是否有人可以帮助更好地理解我做错了什么。通常使用矢量/数组,以下工作正常:
int standardInput;
for (int i = 1; i<=n; i++){
cin standardInput;
array[i] = standardInput;
}
使用地图时我无法使其工作:
int numberToCompare = 4;
map<int numberToCompare, int>myMap;
int standardInput;
cout << "Enter numbers: " << endl;
for (int i = 1; i <= n; i++){
cin standardInput;
myMap.insert(standardInput);
}
我仍在努力了解关键和价值观。我在阅读地图时理解的方式是,使用地图时,关键是独特的,与多地图不同。我不知道该怎么做是允许用户输入来填充地图的其余部分。我在网上看到很多例子,在代码中人们手动输入所有输入,执行以下操作(这违背了我想要完成的任务)。
portMap_.insert(pair<string,int>("fourth", 4444));
portMap_.insert(pair<string,int>("fifth", 5555));
编辑:为了澄清如果我引起一些混乱,我试图用一个通过标准输入给出的数字填充地图。
答案 0 :(得分:1)
我建议您浏览std::map
找到here的文档。然后,请查看insert()
方法文档here中提供的示例。
声明一个map
对象,您需要通过提供类型名称作为模板参数来指定键的类型和值的类型:
#include <map>
using namespace std;
map<int,int> myMap;
如果您想插入一个键/值对:
int myKey = 10;
int myVal = 100;
myMap.insert(pair<int,int>(myKey, myVal));
使用某些typedef可以使上述内容更简洁:
typedef map<int,int> IntMap;
typedef pair<int,int> IntPair;
IntMap myMap;
myMap.insert(IntPair(10, 100));
如果您希望用户输入提供键/值对,只需编写一个接受标准输入值的简单循环,然后将值插入到地图中。
这里有大量资源可以从标准输入中读取值。像下面这样的东西可以解决问题:
// pseudo-code
while (did the user quit?)
{
int key = 0;
int value = 0;
cin >> key >> value;
// maybe if the user enters -1, then you quit, otherwise:
myMap.insert(pair<int,int>(key, value));
}
答案 1 :(得分:1)
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
scanf("%d", &n);
map<int, string> m;
for(int i = 1; i <= n; i++) {
string s = "abracadabra";
m.insert(pair<int, string>(i, s));
}
for(auto it = m.begin(); it != m.end(); it++) {
cout << it->first << " " << it->second <<"\n";
}
}
这很好用。
答案 2 :(得分:0)
问题:编写一个以整数作为键的映射,然后写入通过标准输入提供给它的x个int值
解决方案这里我提供了代码,它将获取std输入并将其存储到MAP,
在此处输入代码
`#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
int main()
{
int n;
int key;
long x;
cin >> n;//std input for number of entries in to MAP
map <int, long> map_book;
for (int i = 0; i < n; i++) {
cin >> x;//std input for VALUE
cin >> key;//std input for KEY
map_book[key] = x;
}
//here am searching the x and pinting if it is there in MAP or Else priniting it is not found
while(cin >> x) {
if (map_book.find(x) != map_book.end()) {
cout << x << "=" << map_book.find(x)->second << endl;
} else {
cout << "Not found" << endl;
}
}
return 0;
}`
答案 3 :(得分:0)
这可能会有所帮助。
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<char,int>mp;
char a;
int b,n;
cin>>n;
for(int i = 0; i<n; i++){
cin>>a>>b;
mp.insert(pair<char,int>(a,b));
}
cout<<endl;
for(auto&x:mp)
{
cout<<x.first<<" "<<x.second<<endl;
}
return 0;
}
输出:
3
a 1
b 2
c 3
a 1
b 2
c 3
答案 4 :(得分:-1)
#include <iostream>
#include <map>
int main ()
{
std::map<char,int> first;
first['x']=8;
first['y']=16;
first['z']=32;
for(map<char,int>::iterator it = first.begin(); it != first.end(); ++it) {
cout << it->first <<" "<< it->second<<endl;
}
return 0;
}