문제

if (vector1.x > ((float*)&vector1)[j])

~이다 제이 단순히 벡터에 대한 색인 일뿐입니까?
예를 들어 C ++는 벡터가 배열이 아니더라도 배열 표기법을 사용하여 이러한 값을 검색 할 수 있습니까?
그렇다면 참조를 통해 이것을 달성한다고 생각합니다 벡터 주소로?

도움이 되었습니까?

해결책

C ++ 표준에 따르면 첫 번째 요소의 유형에 대한 포인터에 대한 (PODS) Struct의 포인터를 주조하는 것은 첫 번째 요소에 대한 포인터를 산출 할 것이라고 말합니다.

struct a {
    float a1;
    float a2;
    float a3;
};

a o1; ((float*)&o1); // points to o1.a1

코드가 컴파일러에 A1, A2 및 A3 사이에 패딩을 추가하지 말라고 말했기 때문에 포인터를 색인화하면 원하는 플로트에 정확히 포인터가 될 것입니다. 그래서 위

((float*)&o1)[1] // *would* return o1.a2

표준 C ++에서 패딩을 변경할 수 없으므로 플랫폼 의존적입니다. 그 코드를 어떻게 정리하는지, 그리고 내가 옳은지 여부 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top