2012-09-16 4 views
-2

코드가 flush[*it % 4].push_back(*(it++) /= 4);이고 iterator를 증가시키기 전에 새로운 값 (이전 값/4)을 push_back 할 의도였습니다.이 방법은 가장 빠른 방법입니다. iterator의 값을 4로 나누고 저장하고 push_back에 새 값을 사용한 다음 반복기를 늘리십시오.목록 push_back 중 C++ 접미사 증가

+0

@juanchopanza 확인해 주셔서 감사합니다. –

답변

5

꽤 심해요. *it % 4 이전이나 이후에 it이 증가합니까? Protip : 정의되지 않았으므로 코드에 잘 정의 된 결과가 없습니다. 이건 정말 나빠. 또한, 일반적으로 하나의 변수에 대한 두 번의 읽기 및 쓰기, 할당 및 함수 호출 인 이 색인으로 사용됩니다. 그것은 하나의 표현을위한 많은 것입니다.

논리를 구현하기 위해 여러 가지 문을 사용하십시오.

+0

내 list.begin()에서 시작하여 루프에서 사용됩니다. while (it! = tableAndHand.end()) flush [* it % 4] .push_back (* (it ++)/= 4); * it % 4 이후에 증가시켜야합니다. –

+0

표현을 분리하는 유일한 방법입니다. – Puppy

+0

그래서 {플러쉬 [(* 그것) % 4] .push_back ((* it)/4); ++ it; } 뭔가 빠르면 빠를 것입니다. –