perl でのプログラミングでは、'redo' という名前のスマート関数を使用できます。条件を確認せずに、ループの最初に戻ることができます。たとえば、予期される値/文字を設定する必要があるテーブルを作成する場合に役立ちます (たとえば、「abc」、他には何もありません)。そのようなC++関数に存在するかどうかを尋ねたいと思います。あなたの助けに感謝します。
4 に答える
6
ループの最初に戻るための redo キーワードはありませんが、 でできない理由はありませんgoto
。(ああ、私はとても汚い推薦を感じgoto
ます...)
int tries = 0;
for(int i=0; i<10; ++i) {
loop_start:
bool ok = ((i+tries)%3==0);
if(ok) {
++tries;
goto loop_start;
}
}
于 2015-06-18T00:45:51.290 に答える
3
より合理的な解決策は
int trie=0;
for(int i=0; i<10; i++) {
while((i+tries)%3==0 {
++tries;
}
}
于 2015-06-18T03:38:09.913 に答える
1
while
単純なループを使用できないのはなぜですか?
auto is_okay = [](char x) { return x=='a' || x=='b'; };
container C;
for(std::size_t i=0; i!=C.size(); ++i) {
char x;
while(!is_okay(x=obtain_new_character())); // get new x until it's okay
C[i]=x;
}
または、同等に、do while
ループ
container C;
for(std::size_t i=0; i!=C.size(); ++i) {
char x;
do {
x=obtain_new_character();
} while(x!='a' && x!='b');
C[i]=x;
}
またはfor
ループでも
container C;
for(std::size_t i=0; i!=C.size(); ++i) {
char x=0;
for(; x!='a' && a!='b'; x=obtain_new_character());
C[i]=x;
}
于 2015-06-18T09:17:16.890 に答える
1
どうしても避けたい場合はgoto
、
int tries = 0;
for (int i=0; i<10; ++i) {do{
bool redo = ((i+tries)%3 == 0);
if (redo) { ++tries; }
else { break; }
} while(1); }
于 2015-06-18T06:50:04.563 に答える