指向std :: map的指针无法插入

时间:2013-06-17 19:07:55

标签: c++ stdmap

我很困惑。为什么这样做:

double doubleValue = 20;
NcVar variable = {some process obtaining an instance}
map<NcVar,double> th;
th.insert(std::make_pair(variable, doubleValue));

然后失败了:

double doubleValue = 20;
NcVar variable = {some process obtaining an instance}
map<NcVar,double> *th = new map<NcVar,double>();
th->insert(std::make_pair(variable, doubleValue));

这意味着,第一个变体以一个键/值对结束,而第二个变体使映射保持不变(0个条目)?

2 个答案:

答案 0 :(得分:1)

适合我:

#include <map>
#include <iostream>
using namespace std;
int main(){
  typedef map<int,float> mapp;
  mapp map1;
  map1.insert(make_pair(1,1.1));

  mapp * mp2 = new mapp();
  mp2->insert(make_pair(2,2.2));
  cout << map1.begin()->second << endl;
  cout << mp2->begin()->second <<endl;
return 0;

}

输出:

$g++ map_test.cpp 
$ ./a.out 
1.1
2.2

答案 1 :(得分:0)

谢谢你的帮助,伙计们。我觉得现在有点蠢。地图为空的假设基于调试器中的外观。我使用XCode作为IDE,当使用指针映射时,它只会搞乱并将地图显示为空。使用cout揭示了真相。