C++ 표준 라이브러리에는 쌍이라고하는 개체가 있습니다. Pair.first 및 Pair.second는 각각 쌍 객체의 첫 번째 및 두 번째 값을 각각 반환합니다. 조건부로 첫 번째 값을 1 씩 증가시키고 싶습니다 (내 쌍은 한 쌍입니다). 이 작업을 수행하려고하면 "1 가치가 필요합니다"라는 메시지가 표시됩니다. 이것은 참조에 의한 값을 전달하지 않는 어딘가에 있기 때문일 수 있습니다. 그러나 .first는 참조에 의해 쌍의 첫 번째 값을 반환하지 않을 수도 있습니다. 만약 그렇다면 누군가 알 수 있습니까?pair.first가 첫 번째 값에 대한 참조를 반환합니까?
답변
first
은 함수가 아니며, 객체 자체 인 struct pair
의 데이터 멤버입니다. 객체의 이름은 lvalue이며 참조와 같습니다.
"Lvalue"는 과제의 왼쪽에 갈 수있는 것을 나타내는 언어 용어로, 값을 할당하거나 메모리에 의미있는 주소가 있습니다.
두 조건이 모두 같은 유형의 lvalue 인 경우 조건부 표현식의 결과는 왼쪽 값입니다. 예를 들어
,
pair< int, int > p;
flag? p.first : p.second = 34; // ok
flag? p.first : 3 = 15; // error: 3 is not an lvalue; 3 = 15 is nonsense
pair< int, short > q;
flag? q.first : q.second = 12; // error: different types
주 "좌변"의 반대는 할당의 우측은 "r- 수치"이다. 이 용어는 C 언어에서 빌려온 용어입니다.
기억 : 표현식의 lvalue는 저장되는 곳이며, rvalue는 내용입니다. 다음 표현 중 의미가있는 것은 값 카테고리입니다. 우선 들어
, 나는 당신이 "1-값이 필요합니다"실제로으로 읽는 것은 (직관적) 실제 개체를 오히려 나타내는 표현이다 C++에서 (L 값), "좌변이 필요합니다"라고 생각 가치있는 것보다.
다음, pair.first
및 pair.second
는 pair.first
및 pair.second
에 대한 참조를 양보하지 않는, 오히려 는 pair
의 내부first
및 second
데이터 멤버입니다. 그들에 대한 참조를 얻을 수는 있지만 참조 자체는 아닙니다.
실제 코드를 보지 않고도 더 이상 구체적인 조언을 제공 할 수 없습니다.
희망이 도움이됩니다.
쌍은 1 값에서 2 값으로의 변환을 구현하는 표준 방법입니다. –
- 1. 행렬의 첫 번째 값에 대한 포인터 만들기
- 2. ListFeed는 첫 번째 행에 대한 데이터 만 반환합니까?
- 3. 중복 쿼리 결과가 참조를 반환합니까?
- 4. json_encode는 배열의 첫 번째 요소 만 반환합니까?
- 5. 왜 내 수업은 첫 번째 값만 반환합니까?
- 6. foreach 배열은 첫 번째 값을 계속 반환합니까?
- 7. 왜 첫 번째 설정 만 반환합니까?
- 8. CRTP : 파생 클래스에 대한 참조를 반환합니까?
- 9. 첫 번째 이외의 값에 대한 선택기 입력 유효성 확인
- 10. 첫 번째 값 이외의 값에 대한 선택기 입력 유효성 검사
- 11. 함수에서 참조를 언제 반환합니까?
- 12. 이것은 어떻게 참조를 반환합니까?
- 13. 왜 read()는 stdin의 첫 번째 줄만 반환합니까?
- 14. 항상 첫 번째 값에 리셋을 받고있다
- 15. 오른쪽 테이블의 첫 번째 값에 왼쪽 join?
- 16. 문서 값에 대한 참조를 반환하는 Rapidjson
- 17. C++ std :: map :: iterator는 아무것도 찾지 못했지만, 아래 첨자 연산자는 매핑 된 값에 대한 참조를 반환합니까?
- 18. 왜 ResourceManager.GetResourceSet은 빌드 후 첫 번째 요청에서 null을 반환합니까? (C#)
- 19. Matlab : 첫 번째 열의 동일한 값에 대한 행렬의 두 번째 열의 합
- 20. 덧글에 대한 첫 번째 게시물에 대한 배지
- 21. LINQ to SQL 배열은 항상 첫 번째 항목을 반환합니까?
- 22. SUDZC : 객관적인 C는 객체 목록에서 첫 번째 객체 만 반환합니까?
- 23. NSLocalizedString은 내가 준 첫 번째 매개 변수를 반환합니까?
- 24. WSO2의 API ESB는 JSON의 첫 번째 노드 만 반환합니까?
- 25. 왜 cv :: mat 벡터가 항상 첫 번째 이미지를 반환합니까?
- 26. 툴킷은 독점적 인 Sun API에 대한 참조를 반환합니까?
- 27. 선택 항목의 첫 번째 값에 따라, 나는이 구조 테이블이
- 28. 첫 번째 화면. 첫 번째 실행에 표시됩니다.
- 29. 왜 멀티 바인딩은 항상 첫 번째 값에 대해 DependencyProperty.UnsetValue를 전달합니까?
- 30. OCaml에서리스트의 n 번째 요소를 반환합니까?
문제가있는 * 최소 * 코드를 보여주십시오. 당신이 그것을 묘사하는 방식으로 작동해야합니다 (그러나 그렇게하지는 않습니다. 그래서 비린내가 있습니다). – syam