【发布时间】:2020-04-06 09:20:59
【问题描述】:
我正在编写一个使用无序映射的程序。经过在此之前的一些研究,我知道要使用无序地图,首先我们需要放置标题。但它没有奏效。提前感谢任何提示。哦,这是错误信息
#error This file requires compiler and library support for the \
^
umap.cpp: In function 'int main()':
umap.cpp:21:2: error: 'unordered_map' was not declared in this scope
unordered_map<string, int> siswa;
^
umap.cpp:21:22: error: expected primary-expression before ',' token
unordered_map<string, int> siswa;
^
umap.cpp:21:24: error: expected primary-expression before 'int'
unordered_map<string, int> siswa;
^
umap.cpp:24:2: error: 'siswa' was not declared in this scope
siswa["saleh"]=90;
^
这是程序
#include <iostream>
#include <unordered_map>
#include <bits/stdc++.h>
using namespace std;
void cari(string key){
if(siswa.find(key)==siswa.end())
cout<<siswa[key]<<endl;
else
cout<<"n/a"<<endl;
}
int main(){
unordered_map<string, int> siswa;
siswa["saleh"]=90;
siswa["mutiara"]=85;
siswa["icam"]=70;
int t;
cin>>t;
string key;
for(int i=0;i<t;i++){
getline(cin,key);
cari(key);
}
}
顺便说一句,对不起我乱七八糟的语法:v
【问题讨论】:
-
首先,您的 cari 函数中的
cout<<siswa[key]<<endl;在此范围内不清除,因为它不是全局变量。您必须将 unordered_map 提供给您的函数 -
不要
#include <bits/stdc++.h> -
你使用什么编译器,你传递了什么编译器标志?另外,Why should I not #include <bits/stdc++.h>? 和 Why is “using namespace std;” considered bad practice?
-
您的第一个错误不完整,是对其他错误的提示。你启用 C++11 了吗?
-
您需要在至少支持
c++11的情况下进行编译。还。请摆脱#include <bits/stdc++.h>和using namespace std;。
标签: c++ c++11 header unordered-map