アカウント名:
パスワード:
同じ言語でありながらコンパイラ間ですら互換性なかったり、数年後にはまたもどうなってるか分からない言語機能をプロジェクトで使うこと自体に良識を疑う。まともな会社ならC++を採用してもtemplateだけは使うなとお達しする。
> まともな会社ならC++を採用してもtemplateだけは使うなとお達しする。
実際にC++使ったことある?templateダメだったら、標準ライブラリほとんど使えないじゃん。
> templateダメだったら、標準ライブラリほとんど使えないじゃん。
実際にC++使ったことある?標準ライブラリなんて元からほとんど使えないじゃん。
# まじめに会社のプロジェクトで使ったことなんてないんだろ?せいぜいスクリプトもどき作るぐらいで。# 一番使用率が高いと思われるゲーム業界でも標準ライブラリなんて使ってないって。
まあ、たしかに入出力周りとか全然使う気になれないですし、ほかにもろくなライブラリもなかったですが、string(文字列)、vector(動的配列)、list/forward_list(リンクリスト)、map/unordered_map(連想配列)あたりのクラス(テンプレート)はプロジェクトの性質によらず使えるのではないでしょうか(もちろん、コンパイラ付属の実装が実用に耐えると判断するか否かは別問題として)。
# C++の標準ライブラリでテンプレートを使っていないものと言ったら、new/delete(が使うメモリ確保・解放処理をユーザ側で差し替える際に定義する関数)や例外クラスしか残らない気がする。# cout/cinも疑似乱数も正規表現もテンプレート、thread/mutexクラスはテンプレートではないけど、ロックやfeatureがやっぱりテンプレート。
C++0xでstring (basic_string)はvector同様に各要素が連続することと決まりました。そのため、Cのライブラリとの相性も少しは良くなったと言えます。
ただし、'\0'終端するわけではないので、basic_stringの要素へのポインタを渡して'\0'終端文字列を受け取るときは、大きめのバッファ(basic_string)で受け取った後、長さ丁度にresizeするなどと、若干の手間が必要になるはずです。それでも、一旦vectorを介すよりは(メモリ面でもコード上でも)手間が減るので良いと思います。
c_str()じゃダメなんですかね。strtokなど、文字列を変更してしまう一部の関数では使えないですけど、それでもvector介すよりはchar型の配列に(C文字列として)コピーして操作したほうが楽な気がします。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
C++=過去の言語 (スコア:-1, 荒らし)
今回はその予告ですね。
Re: (スコア:0)
同じ言語でありながらコンパイラ間ですら互換性なかったり、数年後にはまたもどうなってるか分からない言語機能をプロジェクトで使うこと自体に良識を疑う。
まともな会社ならC++を採用してもtemplateだけは使うなとお達しする。
Re: (スコア:1, 参考になる)
> まともな会社ならC++を採用してもtemplateだけは使うなとお達しする。
実際にC++使ったことある?
templateダメだったら、標準ライブラリほとんど使えないじゃん。
Re: (スコア:0)
> templateダメだったら、標準ライブラリほとんど使えないじゃん。
実際にC++使ったことある?
標準ライブラリなんて元からほとんど使えないじゃん。
# まじめに会社のプロジェクトで使ったことなんてないんだろ?せいぜいスクリプトもどき作るぐらいで。
# 一番使用率が高いと思われるゲーム業界でも標準ライブラリなんて使ってないって。
Re:C++=過去の言語 (スコア:1, 参考になる)
まあ、たしかに入出力周りとか全然使う気になれないですし、ほかにもろくなライブラリもなかったですが、string(文字列)、vector(動的配列)、list/forward_list(リンクリスト)、map/unordered_map(連想配列)あたりのクラス(テンプレート)はプロジェクトの性質によらず使えるのではないでしょうか(もちろん、コンパイラ付属の実装が実用に耐えると判断するか否かは別問題として)。
# C++の標準ライブラリでテンプレートを使っていないものと言ったら、new/delete(が使うメモリ確保・解放処理をユーザ側で差し替える際に定義する関数)や例外クラスしか残らない気がする。
# cout/cinも疑似乱数も正規表現もテンプレート、thread/mutexクラスはテンプレートではないけど、ロックやfeatureがやっぱりテンプレート。
Re: (スコア:0)
あと、STLのstringはリードオンリーにちかいので、
Cのライブラリと相性が悪くつかいにくいと思うな。
Re: (スコア:0)
C++0xでstring (basic_string)はvector同様に各要素が連続することと決まりました。そのため、Cのライブラリとの相性も少しは良くなったと言えます。
ただし、'\0'終端するわけではないので、basic_stringの要素へのポインタを渡して'\0'終端文字列を受け取るときは、大きめのバッファ(basic_string)で受け取った後、長さ丁度にresizeするなどと、若干の手間が必要になるはずです。それでも、一旦vectorを介すよりは(メモリ面でもコード上でも)手間が減るので良いと思います。
Re: (スコア:0)
c_str()じゃダメなんですかね。
strtokなど、文字列を変更してしまう一部の関数では使えないですけど、それでもvector介すよりはchar型の配列に(C文字列として)コピーして操作したほうが楽な気がします。