반응형
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
반응형
'Programing' 카테고리의 다른 글
npm 설치에서 "package.json 파일을 찾을 수 없음"오류가 표시됨 (0) | 2020.11.15 |
---|---|
Gradle을 수동으로 설치하고 Android Studio에서 사용 (0) | 2020.11.15 |
Perforce에서 변경 목록 설명 텍스트를 어떻게 검색합니까? (0) | 2020.11.15 |
프로그램 취소 명령에서 ctrl c와 동일 (0) | 2020.11.15 |
fps 게임에서 조준 봇은 어떻게 작동합니까? (0) | 2020.11.15 |