【C++】制御文の自作は可能でしょうか

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
array

【C++】制御文の自作は可能でしょうか

#1

投稿記事 by array » 15年前

C/C++で自作の制御文を作る事は可能でしょうか

制御文とは、if文やwhile文、for文などを指します。

C++の仕様的に不可能であれば、不可能という事実を知りたいです。
可能であれば、キーワード程度で良いので簡単にご教授お願い致します。


※こういったループ処理を
int main() {
int dt[10];

for (int i = 0; i < 10; i++) {
dt = i;
}
}

※自作の制御文で動作させたい【理想の形】
int main() {
int dt[10];

foreach (dt as key => value) {
value = key;
}
// key に配列の添字(数字)、valueにdt参照ポインタ
}


不足して分からない部分があれば補足しますので、よろしくお願いします。

たかぎ

Re:【C++】制御文の自作は可能でしょうか

#2

投稿記事 by たかぎ » 15年前

不可能です。
ただし、マクロを使えば近いことができる場合もあります。
Boost C++ LibrariesのForeachを調べてみてください。

array

Re:【C++】制御文の自作は可能でしょうか

#3

投稿記事 by array » 15年前

毎回ご回答ありがとうございます。

> マクロを使えば近いことができる場合もあります。
確かに、マクロが一番近い事ができそうですね。
foreach を for文に置き換えるようなマクロも書こうと思ったのですが、「,」が入ると
理想のイメージと異なるので断念してました。

今回の質問はどちらかというと、制御文の自作は不可能だという事を
確認しておきたかったので、たかぎさんからの回答を頂けて安心しました。

勉強になりました。ありがとうございます^^ 画像

たかぎ

Re:【C++】制御文の自作は可能でしょうか

#4

投稿記事 by たかぎ » 15年前

C++の場合、制御文を自作するのではなく、アルゴリズム関数とファンクタを組み合わせるのが一般的なスタイルです。
標準ライブラリでは添字を操作できるものがないので、例えば次のようなものを自作することになるかと思います。

template <class ForwardIterator, class BinaryOp>
void for_each_with_subscript(ForwardIterator first, ForwardIterator last, BinaryOp op)
{
for (typename std::iterator_traits<ForardIterator>::difference_type i = 0; first != lasy; ++i)
op(*iter, i);
}

array

Re:【C++】制御文の自作は可能でしょうか

#5

投稿記事 by array » 15年前

なるほど、C++の標準ライブラリを勉強しなおした方が今後の為になりそうですね。

閉鎖

“C言語何でも質問掲示板” へ戻る