프로그램의 출력은 아래 1
인쇄 문자열하지만 2
이되지 않고 C++ 반복자 수수께끼는
- 을 이해하지 못하는
1: foo strlen: 3 2: strlen: 0 3: foo strlen: 3 4: foo strlen: 3 5: strlen: 0 6: strlen: 0
무엇인지의 차이 세 개의 루프는
출처 :
#include "stdafx.h"
#include <map>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
map<string, string> m;
m["foo"] = "bar";
const char * s;
for(map<string, string>::iterator it = m.begin(); it != m.end(); it++)
{
pair<string, string> kvPair = *it;
s = kvPair.first.c_str();
printf("1: %s strlen: %d\n", s, strlen(s));
break;
}
printf("2: %s strlen: %d\n", s, strlen(s));
for(map<string, string>::iterator it = m.begin(); it != m.end(); it++)
{
s = (*it).first.c_str();
printf("3: %s strlen: %d\n", s, strlen(s));
break;
}
printf("4: %s strlen: %d\n", s, strlen(s));
for(map<string, string>::iterator it = m.begin(); it != m.end(); it++)
{
s = ((pair<string, string>) (*it)).first.c_str();
printf("5: %s strlen: %d\n", s, strlen(s));
break;
}
printf("6: %s strlen: %d\n", s, strlen(s));
return 0;
}
업데이트 작은 C와 프로그래머에 대한 설명은 ++ 배경 감상 할 수있다.
Nitpick> : "stdafx.h", 누락 된,'std ::'가 없습니다. ;-) –
DevSolar
'kvPair.first.c_str()'는 일시적이지 않습니까? – DevSolar
'kvPair'와 같이 온 것입니다. –