boost :: multi_index 참조를 읽으면 iterator_to
메서드의 순서가 일정하다는 것을 발견했습니다. 어떻게 가능합니까? 즉, iterator가 value_type이 아닌 다른 객체 인 경우 컨테이너가 인덱스를 검색하지 않고 해당 내부 노드를 찾는 방법은 무엇입니까?C++ boost :: multi_index : iterator_to 멤버 함수의 순서
내가 생각할 수있는 유일한 해결책은 컨테이너의 "내부 노드"(또는 그게 무엇이든)의 주소가 보유하는 value_type과 동일하다는 것입니다 (예 : node_type을 value_type 또는 무언가). 전달 된 인수가 intervalue value_type에 대한 참조 인 경우 해당 반복기는 인수의 주소를 통해 쉽게 생성되어 적 - 검은 노드를 가져올 수 있습니다.
하지만 !! 동일한 주소를 가진 두 개의 객체가있을 수없는 C++ 표준 제한은 어떻게됩니까? 메모리 레벨에서 일어날 수있는 정렬, 채우기, 채우기 또는 그 밖의 것들은 어떻습니까?
* 동일한 주소를 가진 두 개의 개체가있을 수없는 C++ 표준 제한은 무엇입니까? * 동일한 주소를 가진 개체에 대한 참조가 두 개 있어서는 안되는 이유는 무엇입니까? 두 개의 참조를 취하는 함수가 있다고 가정하고 동일한 객체를 두 번 공급합니다. –
표준에서 물건을 읽었을 때 내 기억이 나를 배반하지 않는다면 참조는 객체가 아니며 두 참조 인수는 동일하고 고유 한 객체를 가리킬 것입니다. 규칙 위반은 전혀 없습니다. 하지만, 다중 색인 컨테이너의 내부에 대한 나의 "가정"에서, 우리는 두 개의 다른 객체, 즉 컨테이너에 저장된 value_type과 실제로 그것을 저장하는 노드를 가지고 있습니다. –