我很困惑。为什么这样做:
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个条目)?
答案 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揭示了真相。