在 C++ 中定义和使用 std::map 时出现编译错误
Compilation error when defining and using std::map in C++
此代码:
#include <map>
#include <utility>
#include <functional>
#include <iterator>
typedef std::map<int,int> mymap;
mymap test;
test.insert(std::make_pair(1,2));
产生此编译错误:
In file included from fin.cc:35:0:
fin.h:14:1: error: 'test' does not name a type
test.insert(std::make_pair(1,2));
什么可能导致此错误?
你需要把test.insert(std::make_pair(1,2));
放在int main(){}
里面,它会和你一起编译没有错误。
这是一个包含一些测试用例的完整示例:
#include <iostream>
#include <map>
#include <utility>
#include <functional>
#include <iterator>
using namespace std;
typedef std::map<int,int> mymap;
mymap test;
int main()
{
map<int, int>::iterator itr;
test.insert(std::make_pair(1,2));
test.insert(std::make_pair(3,4));
test.insert(std::make_pair(5,6));
test.insert(std::make_pair(10,11));
cout<<"Size: "<<test.size()<<endl;
for (itr = test.begin(); itr != test.end(); ++itr) {
cout << "First: " << itr->first<< " Second: " << itr->second <<endl;
}
}
输出:
尺寸:4
第一:1 第二:2
第一:3 第二:4
第一:5 第二:6
第一:10 第二:11
此代码:
#include <map>
#include <utility>
#include <functional>
#include <iterator>
typedef std::map<int,int> mymap;
mymap test;
test.insert(std::make_pair(1,2));
产生此编译错误:
In file included from fin.cc:35:0:
fin.h:14:1: error: 'test' does not name a type
test.insert(std::make_pair(1,2));
什么可能导致此错误?
你需要把test.insert(std::make_pair(1,2));
放在int main(){}
里面,它会和你一起编译没有错误。
这是一个包含一些测试用例的完整示例:
#include <iostream>
#include <map>
#include <utility>
#include <functional>
#include <iterator>
using namespace std;
typedef std::map<int,int> mymap;
mymap test;
int main()
{
map<int, int>::iterator itr;
test.insert(std::make_pair(1,2));
test.insert(std::make_pair(3,4));
test.insert(std::make_pair(5,6));
test.insert(std::make_pair(10,11));
cout<<"Size: "<<test.size()<<endl;
for (itr = test.begin(); itr != test.end(); ++itr) {
cout << "First: " << itr->first<< " Second: " << itr->second <<endl;
}
}
输出:
尺寸:4
第一:1 第二:2
第一:3 第二:4
第一:5 第二:6
第一:10 第二:11