> 백엔드 개발 > C++ > C에서 `벡터 v(istream_iterator(cin), istream_iterator());`가 함수를 선언하는 이유는 무엇입니까?

C에서 `벡터 v(istream_iterator(cin), istream_iterator());`가 함수를 선언하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-23 14:54:24
원래의
378명이 탐색했습니다.

Why Does `vector v(istream_iterator(cin), istream_iterator());` Declare a Function in C  ?

가장 짜증나는 구문 분석에서 임시 반복자의 난처한 사례

C의 악명 높은 구문 분석 모호성인 가장 짜증나는 구문 분석은 난처한 상황을 야기합니다. 질문: 다음 줄은 어떻게 함수로 해석될 수 있나요? 선언?

vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
로그인 후 복사

이 특이한 동작을 이해하려면 가장 짜증나는 구문 분석의 세부 사항을 조사해야 합니다. 두 번째 임시 반복자는 실제로 유형, 즉 매개변수 없이 반복자를 생성하는 함수로 해석될 수 있습니다. 그러나 가장 중요한 것은 첫 번째 임시 반복자의 해석을 이해하는 것입니다.

두 번째 반복자와 달리 첫 번째 임시 반복자는 괄호 안에 혼란스럽게 표시되며 명시적인 매개변수 이름이 없습니다. C의 유산인 이 색다른 구문은 이 반복자가 어떤 유형을 나타내는가?

답은 istream_iterator(cin)가 본질적으로 istream_iterator와 동일하다는 것입니다. 신. 괄호는 의미 있는 목적을 제공하지 않으며 단지 불필요할 뿐입니다. 이 흥미로운 구문을 사용하면 함수 선언에서 인수 이름을 괄호 안에 임의로 묶을 수 있습니다.

결국 이 코드의 당혹스러운 특성은 이 구식 구문에 의존하기 때문입니다. 첫 번째 매개변수가 istream_iterator cin이라는 이름의 이러한 예상치 못한 동작은 이러한 구문적 유물의 단점을 강조하여 잠재적으로 코드의 혼란과 모호성을 야기합니다.

위 내용은 C에서 `벡터 v(istream_iterator(cin), istream_iterator());`가 함수를 선언하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿