PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/07/22 08:51:08
Name DEICIDE
Subject C++ 질문입니다. (함수 객체 어댑터 사용 문제. 무한루프에 빠지네요)
안녕하세요, 항상 우수한 PGR 프로그래머 분들로부터 많은 도움을 받고 있는 DEICIDE 입니다.
오늘은 함수 객체 어댑터를 공부하다가 막히는 부분이 생겨서 질문드립니다.
오늘은 에러나 경고가 뜨지 않는 부분이어서 사실 더 난감했습니다;;;

문제는 간단합니다. 벡터를 입력받고, 특정 값을 입력받아서, 그 특정 값보다 작은 값을 찾아 또다른 벡터에 담아 출력하는 프로그램입니다.


#include <iostream>
#include <functional>
#include <vector>
#include <algorithm>

using namespace std;

void main(void)
{
        int iv[10] = {1,2,3,4,5,6,7,5,4,12};
        vector<int>vec(iv,iv+5);
        vector<int>nvec;
        vector<int>::iterator iter=vec.begin();
        const int val=5;
        
        while((iter=find_if(iter, vec.end(), bind2nd(less<int>(), val))) != vec.end());
        {
                nvec.push_back(*iter);
                iter++;
        }

        for(unsigned int i=0; i<nvec.size() ; ++i)
        {
                cout<<nvec[i];
        }
}


// 그런데 while 부분에서 무한루프에 빠져버립니다.
무한루프에 빠지지 않기 위해 5보다 작은 값을 찾으면 iter 를 증가시키도록 했는데, 그래도 빠져버리네요;
어떤 부분이 문제일까요??

ThEnd.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
Humaneer
09/07/22 10:50
수정 아이콘
제가 눈컴파일 실력이 모자라서, 코드를 돌려봤습니다 (winXP + vc6)

디버깅은 while의 조건문, while내부 첫번째 코드(nvec.push_back())에 각각 break-point를 걸고 돌려봤습니다. 결과는 루프의 조건문에서 계속 빙빙 돌기만 하고 while 내부 코드로 아예 들어가지 않더군요. -_-;

혹시나 해서 while구문을 대충 비스무리하게 for구문으로 바꿔보았는데요.

for ( ; iter != vec.end(); iter = find_if(iter, vec.end(), bind2nd(less<int>(), val)))

nvec.push_back(*iter);
iter++;


1,2,3,4가 출력이 되네요.

일단 컴파일러의 문제일수도 있으니, 혹시 저처럼 visual studio에서 돌려보셨다면 bcc, gcc, mingw 같은 환경으로 테스트를 해보심이 좋을듯 합니다.
Humaneer
09/07/22 11:08
수정 아이콘
음.. 혹시나 온라인 컴파일러가 있나 해서 구글을 뒤지다가 아래의 사이트를 발견했습니다.

http://codepad.org/

굉장히 편리한 사이트네요. 여러가지 언어를 지원해줍니다.

암튼 코드를 submit해서 결과를 보니
역시나 while 구문을 사용한 코드는 time-out이 뜨네요.
for로 바꿔서 submit을 하면 결과가 나옵니다.

도대체 무엇이 문제일까요? 저도 모르겠습니다. 크
09/07/22 11:11
수정 아이콘
Humaneer님// while() 의 조건문에 문제가 있는 것일까요...? 제 생각에는 딱히 문제가 있어 보이지는 않아 보이는데...
작성해주신 for 문을 봐도 다른점이 없어뵈고요;
WinXP + Visual Studio 2005를 쓰고 있습니다. 흠 ㅡ_ㅡ
09/07/22 11:13
수정 아이콘
Humaneer님// 오 정말 괜찮은 사이트군요. 웹에서 코드를 이렇게 실시간으로...
관심 가지고 도움 주셔서 정말 감사합니다.
Humaneer
09/07/22 11:25
수정 아이콘
DEICIDE님 //

아무래도

1. while()의 조건문에 문제가 있음
2. 컴파일러의 버그

둘 중 하나겠지요? 저는 2번의 가능성을 높게 보고 있습니다만..

제가 알기로 vc 컴파일러는 는 버그가 꽤나 많아서 수정이 많이 되어왔지만 아직도 여기저기에 버그가 널려있다고 들었습니다. 특히 stl 쪽으로요.

아는 사람들에게 gcc로 컴파일해서 실행해보라고 해봐야겠네요. :-)
Je ne sais quoi
09/07/22 12:02
수정 아이콘
저는 stl을 몰라서 해석은 안되지만... while 문 끝에 ;이 있습니다. 빼니까 1234 출력되네요.
dozing_lamb
09/07/22 12:51
수정 아이콘

//아무거나


윗 문장도 컴파일이 됨니다

while( ...); <-- ;가 있다면 while문은 거기에서 끝나고
는 실행이 안됩니다
while아래에 있는
은 아무 의미 없는 문장으로 해석
Humaneer
09/07/22 12:52
수정 아이콘
크으으으으 ㅠ_ㅠ; 방금 while 조건문 마지막에 ;를 발견하고, 다른 분이 발견하기 전에 저의 댓글을 후딱 지우던지 -_-;

아무튼 조치를 취하러 오면서, 혹시 다른 분이 답글 달아놓으신건 아니겠지 하는 불안한 마음에 와봤더니, 역시나 달려있군요.

디버깅을 돌리면서도 왜 while수행 구문으로 안들어가는데 무한루프가 돌까? 만 고민했지 맨 뒤에 ;를 못봤네요.

컴파일러 버그니 뭐니 했는데 -_-; MS사에게 살짝 미안하네요. 암튼 -the end.
09/07/22 13:21
수정 아이콘


ㅡ,.ㅡ 죄송합니다. (특히 Humaneer 님;)
답변달아주신분들 정말 감사하고요;;;
자진삭게행 가야하는것인지... ㅡ_ㅡ;;
09/07/22 14:01
수정 아이콘
dozing_lamb님//
도 실행됩니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
공지 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 88435
163976 야구 질문입니다 [6] 一切唯心造72466 13/04/03 72466
163975 이런 계산이 가능한가요? [5] 시미군89354 13/04/03 89354
163974 4월말-5월초에 입고 나가기 좋은 스타일 어디서 볼 수 있나요? [2] 자음연타좀71368 13/04/03 71368
163951 쿼티폰 추천부탁드립니다 [11] 천둥61297 13/04/03 61297
163950 요즘 할만한 게임 뭐가 있나요? [10] 목화씨내놔66085 13/04/03 66085
163949 bm코드 짚기가 너무 어려운데 어떻게 하셨나요? [12] 뽀로로71947 13/04/03 71947
163948 여행사에 대해서 궁금한점이 있습니다 [4] 소녀시대컴백56533 13/04/03 56533
163947 세들어사는집을 비워둔 상태인데 수도요금은 계속 내야하는건가요 ? [18] Ha.록70888 13/04/03 70888
163946 이렇게 하면 살을 얼마나 뺄 수 있을까요? [10] 연애박사68369 13/04/03 68369
163945 lol이 중고등학생 친목용 게임으론 최고인 것 같지만... [34] 창이92497 13/04/03 92497
163943 변 질문 ......... [1] 피지컬보단 멘탈55497 13/04/03 55497
163942 혹시 서울 재즈 페스티벌 가려고 계획하시는분 있으세요?! [5] Nujnah_Eab53474 13/04/03 53474
163941 류현진선수 대뷔전 [6] 가게두어라58847 13/04/03 58847
163940 노트북이 맛이 갔습니다. [1] 시지프스55529 13/04/03 55529
163939 축구 룰 질문드립니다 - 홈 & 어웨이 방식 [5] Dwyane53497 13/04/03 53497
163938 니달리와 트포에 대해서. [8] 자기 사랑 둘57619 13/04/03 57619
163937 [퍼드]60랭 진로조언+인벤 활용법좀 [5] 이즈리얼51983 13/04/03 51983
163935 악성코드 이건 어떤 프로그램이 좋나요?? [3] 김치찌개54548 13/04/03 54548
163934 경제 문제 하나 여쭤보고 싶습니다 [2] 643634632654239 13/04/03 54239
163931 미국 학생비자 질문드려요... [3] 神용재54329 13/04/03 54329
163930 발음과 발성은 후천적으로 고칠수 없나요? [12] H263380 13/04/03 63380
163929 저가형 헤드폰 하나 추천해주시겠어요? [3] azurespace49230 13/04/03 49230
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로