2013-06-17 3 views
-2

매우 혼란 스럽습니다. 이유는이 작업을 수행합니다std :: map에 대한 포인터가 삽입되지 않습니다.

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 엔트리)를 유지하는 동안 ? 나를 위해

+5

어떻게 실패했는지 어떻게 알 수 있습니까? 여기에 게시 한 코드에는 아무런 문제가 없으므로 오류가 다른 곳에 있다고 가정합니다. – templatetypedef

+3

전체 프로그램을 게시하고 예상되는 동작 및 관찰하는 동작을 설명하면 더 나은 도움을 얻을 수 있습니다. – user763305

+0

std :: map <...>? –

답변

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 
0

감사합니다, 여러분. 좀 바보 같아. 지도가 비어 있다는 가정은 디버거의 모양을 기반으로했습니다. Xcode를 IDE로 사용할 때 포인터를 사용하여 맵핑하면, 단순히 엉망이되어 비어있는 맵으로 표시됩니다. 커트를 사용하여 진실을 밝혀 냈습니다.

관련 문제