2014-11-25 4 views
1

조건으로 벡터를 통해 루프에서 결과를 얻은 다음 그 결과에 대해 작업을 수행해야합니다.for 루프는 while 조건으로 어떻게합니까?

do{result} 

내 데이터는 박탈 연속 인바운드 JSON 데이터는 I [2]를 선택한 후 [3] 다른 벡터에 항목을 보낼 항목을 확인해야 할 7 그룹에서 JSON 성질의 것입니다.

vector<std::string> buydat; 
vector<std::string> pricedat; 
for(int b = 2; b < buydat.size(); b+=7){ 
    do{ 
     pricedat.push_back(buydat[3]); 
    } 
    while(
     //(int b = 2; b < buydat.size(); b+=7;) 
     buydat[b] == "Buy" 
    ); 
} 
:

내 상태는 내 행동이

do{ 
    pricedat.push_back(buydat[3]); 
} 
내 결과가

로 표시 할 수 있습니다

for(int d = 0; d < pricedat.size(); ++d){ 
    cout << pricedat[d] << " " << endl; 
} 

내 코드입니다

(for(int b = 2; b < buydat.size(); b+=7); 
buydat[b] == "Buy") 

입니다 16,

내 오류 :

terminate called after throwing an instance of 'std::bad_alloc' 
    what(): std::bad_alloc 
Aborted 

어떻게 조건으로 루프 결과에 대한합니까? 데이터를 7 번 반복 -> 항목 [2]에 유효성 검사 -> 해당 계열의 항목 [3]을 벡터로 보냅니다.

+3

조건이 종료되지 않습니다. 'buydat [b]'는'do'-'while' 루프 본문에서 수정되지 않습니다. – Columbo

+2

현재 두 개의 중첩 루프가 있습니다. 'buydat [b] == "Buy"가 true이면 내부 루프는 종료되지 않으므로 벡터에 대한 메모리가 부족합니다. 나는 당신이 대신하기를 원하는 것을 보는데 어려움을 겪고있다. 아마 if (buydat [b] == "Buy") {pricat.push_back (buydat [3]); }'? 어쨌든 코드가 달성하고자하는 것을 설명하는 게시물을 업데이트하는 것이 유용 할 것입니다. –

+0

매 7 초마다 종료하고 다음 세트로 다시 처리해야합니다. – nerd007

답변

0

코멘트에서 코드가 있어야한다 :

vector<std::string> buydat; 
vector<std::string> pricedat; 
for(int b = 2; b < buydat.size(); b+=7){ 
    if (buydat[b] == "Buy") { 
     pricedat.push_back(buydat[b+1]); 
    } 
} 

원래 코드는 무한 루프를 가지고 또한 buydat 배열에 잘못된 인덱스를 사용했습니다.

관련 문제