C++は進化している

アバター
いわん
記事: 32
登録日時: 9年前

C++は進化している

投稿記事 by いわん » 2年前

恥ずかしながらつい最近まで C++ の for 文で次のような書き方が出来ることを知りませんでした。

CODE:

	int array[] { 2, 3, 5, 7 };
	for (auto e : array)
	{
		std::cout << e << std::endl;
	}
範囲for文と言うんですか。最初見たときは別の言語かと思いましたよ(笑)
思えば C++11 あたりから必要になったところ以外は全く勉強してなかったからなー。
これでは C++ が出来ますなんて言えないですね。しっかり勉強しないと。

アバター
usao
記事: 1889
登録日時: 12年前

Re: C++は進化している

投稿記事 by usao » 2年前

C++の新しい(というか,昔は無かった)文法で言えば
戻り値の型が後置な関数とか,書いたことないですね.
ググるとその戻り値も decltype とか書かれてたりして,すっごい別言語な様相.

templateでコンパイル時に条件分岐を解決してあーだこーだいうやつら( "SFINAE" とか何とか)
に関しては本当に黒魔術としか見えず,全くついていけぬ.

あと,「標準で文字コードの変換が入ったんですか? やったー!」とか思ってら
即「え? 撤回されたんですか やだー!」っていう……

アバター
usao
記事: 1889
登録日時: 12年前

Re: C++は進化している

投稿記事 by usao » 2年前

「ユーザー定義リテラル」なんて物の存在も最近ちらっと見つけたけど,
こんなの実用したらイミフコードが爆誕しそうな…

アバター
いわん
記事: 32
登録日時: 9年前

Re: C++は進化している

投稿記事 by いわん » 2年前

最近のプログラミング言語は抽象化が行き過ぎててぱっと見ほんとに意味不明ですね。
具体的な数値や型が見えないとロジックがイメージ出来ない私にはついていけません(^^;

アバター
もるも
記事: 54
登録日時: 9年前

Re: C++は進化している

投稿記事 by もるも » 2年前

foreach的なやつはどの言語でもありそうなイメージでしたが、C++はfor文に組み込まれてるんですね(゚д゚)
C++で書こうとしてforeachどこどこ?ってなってしまいそうです(笑)

アバター
いわん
記事: 32
登録日時: 9年前

Re: C++は進化している

投稿記事 by いわん » 2年前

C++ だけちょっと仕様が独特ですね。書き方もなんか数学表記っぽいというか・・
それにコンテナとイテレータを自分で作れば独自の取り出し機能が出来るようで、
ツリー構造のコンテナクラスを計画中です。もしかして既にあるかな。

アバター
usao
記事: 1889
登録日時: 12年前

Re: C++は進化している

投稿記事 by usao » 2年前

範囲forで書く
→ ループ内で「i番目」っていう値が欲しくなる
→ 旧来型forに書き直す

という儀式.あると思います.

アバター
いわん
記事: 32
登録日時: 9年前

Re: C++は進化している

投稿記事 by いわん » 2年前

usao さんが書きました:
2年前
→ ループ内で「i番目」っていう値が欲しくなる
ありがちですね。
参照を使ってポインタ演算で i を計算する方法もなくはないですが・・・

CODE:

	int array[] { 2, 3, 5, 7 };
	for (auto& e : array)
	{
		std::cout << &e - std::begin(array) << " " << e << std::endl;
	}
なんか二度手間ってかんじですねw
最後に編集したユーザー いわん on 2023年3月21日(火) 11:08 [ 編集 1 回目 ]

アバター
usao
記事: 1889
登録日時: 12年前

Re: C++は進化している

投稿記事 by usao » 2年前

何番目かを演算で求めるのは「なんだかなぁ感」が強いですよね.

元々範囲forで書かれていて → 何らかの理由で「何番目か」が必要になった場合とか,
こんなコードが生まれそうな予感.

CODE:

int i = 0;  //←コレを追加!
for (auto& e : array)  //※既存の範囲for
{
	...  //※この辺で「何番目か」が欲しくなったので.
	
	++i;  //←コレを追加ぁ!
}

アバター
いわん
記事: 32
登録日時: 9年前

Re: C++は進化している

投稿記事 by いわん » 2年前

仕事では改造時に影響範囲をなるべく少なくしようとしてそういうコードが生まれがちですねー(´-ω-`)