在 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