Programing

std : set (단일 콜론 사용)이 컴파일되는 이유는 무엇입니까?

lottogame 2020. 11. 15. 10:52
반응형

std : set (단일 콜론 사용)이 컴파일되는 이유는 무엇입니까?


실수로 썼다

std::set<string> keys;

같이:

std:set<string> keys;

하지만 이상하게도 Visual Studio 2013은 여전히 ​​컴파일됩니다.

왜 이런 일이 발생합니까?

실제로 keys는 정의 될뿐만 아니라 나중에 다음과 같은 문자열 집합으로 사용됩니다.

if(keys.find(keystr)==keys.end()){
    keys.insert(keystr);
    toret.push_back(tempv);
}

블록 범위에서 식별자 뒤에 단일 콜론이 있으면 레이블이 도입됩니다. 따라서 귀하의 진술은 다음과 같습니다.

set<string> keys;

레이블이 std있고 명령문으로 이동할 수 있다는 점을 제외하고 goto std;.

어떤 이유로이 이름 set은 컴파일러에 알려져 있습니다. using namespace std;, 또는 using std::set;, 또는 이와 비슷한 것을했거나 set어딘가에 자신의 유형 을 정의했을 수 있습니다 .


두 번째 경우 std는 레이블입니다. case 문에서 잘못된 맞춤법 기본값과 동일합니다.

참고 URL : https://stackoverflow.com/questions/52049468/why-can-stdset-with-a-single-colon-compile

반응형