개체 클래스가 있고 각 개체의 속성 하나를 다른 모든 개체의 속성과 비교해야합니다. 일치하는 경우 코드는 무언가를해야합니다. 결과적으로 두 개의 'for 루프'가 객체를 통해 반복되어 해당 속성을 가져오고 두 번째 'for 루프'에서는 속성의 요소를 통과하는 세 번째 'for 루프'가 있습니다 (벡터). . 일치하는 경우, 현재 반복을 중단하고 다음 반복으로 넘어가려면 가장 바깥 쪽 'for 루프'가 필요합니다 (다른 객체와의 첫 번째 일치 만 고려해야 함).중첩 for 루프에서 continue 문과 같은 것을 사용하는 방법은 무엇입니까?
'goto'문을 살펴보고 do {} while() 구조를 만들었지 만 원하는 결과를 얻는 방법으로 구현하지 못했습니다. 내가 필요로하는 것은 가장 안쪽 루프의 조건문에서 일어나는 일을 기반으로 가장 바깥 쪽 루프에 대한 'continue'문과 같습니다.
이 작업을 수행하는 좋은 방법은 무엇이며 어떻게 구현해야합니까?
편집 : 내가 받아 들인 대답 옆에, 나는 또한 완벽하게 잘 작동하고 고토에 의존하지 않는 Martin Bonner의 대답을 추천 할 것이다. 'K'루프에서 조건문이 충족되는 경우
for (int i = 0; i < max; i++){
Object & object1 = system.getAgent(i);
VectorOfStrings object_property1 = object1.getProperty();
for (int j = i + 1; j < max; j++){
Object & object2 = system.getObject(j);
VectorOfStrings object_property2 = object2.getProperty();
for (unsigned int k = 0; k < object_property1.size(); k++){
if (object_property1[k] == object_property2[k]){
//do something
break; //this aborts the inner most loop
//Additionally, I need the outer most loop to move on one iteration
}
}
}
}
그래서, 나는 '내가'루프가 현재 반복을 중단하고 다음 단계로 이동하고 싶습니다.
또한 새롭기 때문에 코드가 멋지지 않을 수도 있지만이 특정 문제에 집중하십시오! 코드의 일반적인 구조 조정은 물론 :)의 문제에 대한 해결책이 될 수없는 한
:
compare_objects
이 같은 곳은 가장 바깥 쪽 루프가 하나의 반복에서 움직입니다 * 당신은 내가 증가하는 것을 의미합니까? object_property1과 object_property2의 크기가 같지 않으면 어떻게 될까요? – stijn덧붙여 말하자면 : "나는 영어로 어휘가 부족합니다."라고 말할 때까지, 나는 네가 나 같은 원어민 강사라고 생각했다. 영어는 괜찮습니다. –
'do {...} while (false);'hack은 중첩 된 if-else의 중첩 루프를 피하는 데 효과적입니다. 'break'를 사용하여 스위치에서 빠져 나오기 때문입니다. – stefaanv