最近C++(VC++)を使い始めたんですが、疑問があります。
VBだと
select (〜)
case 1 to 10
・・・
case Is >= 11
・・・
End Select
という書き方が出来ますが、C++でこれに近い書き方って出来ますか?
今のところ、
case 1
・
・
case 10
・・・・
break;
という方法しかないようですが、どなたかスマートな方法ありましたら
教えてください。VBの考えを捨てろという指摘はあると思いますが、
もしあれば便利だと思って質問しました。
> という書き方が出来ますが、C++でこれに近い書き方って出来ますか?
はできませんね。
> どなたかスマートな方法ありましたら
テーブル(1〜10の値はTRUE、11以上はFALSEみたいな配列)を使うとかそういう方法しかないようです。
# 2パターンしかないようならif〜elseでいいですが。
回答ありがとうございます。
>テーブル(1〜10の値はTRUE、11以上はFALSEみたいな配列)を使うとかそういう方法しかないようです。
とありますが、ちょっとイメージが掴めないのですが、これはどういう事なのでしょうか?出来れば使い方のサンプルを教えていただけると助かります。
配列ではないでが、判別用の関数を用いるとか。。。
例えば、こんな感じで。
#define OUT_OF_RANGE 99
int CheckRange( int data ){
if( data <= 10 ){
return data;
}else{
return OUG_OF_RAMGE;
}
}
(略)
switch( CheckRange(〜) ){
case 1:
・・・
break;
case 2:
・・・
break;
(略)
case 10:
・・・
break;
case OUT_OF_RANGE:
・・・
break;
}
(略)
switch 使うのだったら
switch(val){
case 1: break;
case 2: break;
:
:
case 10: break;
default:
}
で良いのでは?
で、配列の場合だと
const int MAX = 1000;
bool check[MAX] = {false};
for(int i = 1; i <= 10; i++) check[i] = true;
if(check[n]){
処理
}
な感じかな?
というか、素直にif文を使っても大して違わないような気がしますけれど。
VCでコードを書いているんですし、VCなりに見やすい書き方をする癖をつけた方が
多分、良いと思います。無理にVB的な書き方をしてもVCのコードとして
見づらくなるのであれば結果的には良くないと思いますし。
特に仕事でやるのであれば、ソースやアルゴリズムの見易さは大切です。
仕事でコードを書く場合、他の人にも見やすい事を要求されますから
一般的にVCで書くコードから大きく外れたコードを書いてもメリットは
ほとんど無いと思いますよ。
「郷に入っては郷に従え」です。
みなさん色々ありがとうございます。
確かに無理にVBのフォーマットにあわせる必要は無いですね。
個人的にはVBのSELECTの書き方がすっきりしてて好きなんですが、
無理にVCでやる必要はないですね。
お世話になりました。
ツイート | ![]() |