パスワードを忘れた? アカウント作成
10921588 journal
日記

tamanegiの日記: 備忘録: c++ (string) 9

日記 by tamanegi

久々にc++を書いてる。全然覚えてなくて泣ける。
const関連のコンパイルエラーが全然分からなくて悩んでしまった。

それはさておき、stringはイテレータをコンストラクタに渡せる。
あまり使わないけどふと必要(ってほどでもないが)になった。

// あまりに無意味なサンプル
std::string::const_iterator beg = str.begin();
std::string::const_iterator end = str.end();
std::string hoge( beg, end );

あと、関係ないけど、

std::map< std::string, std::vector< std::string > >::const_iterator it;

みたいの書いてたらとあるヒトに怒られた。タイプ量が多いのが許せないらしい。using namespace stdして、さらにtypedefもするべきだと。じゃあ自分で書け、と言ったら逃げた。うぜえ。クエリ用の関数内部でちょっと使うだけのものにtypedefとかしたくないよ。using namespaceは何となく趣味じゃない。他人が使うぶんには全く気にならないけど、なんとなく自分では使わない。

# そして花粉症がつらい。窓を開けると死ねる。開けないと暑い。結局死ぬ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by minet (45149) on 2014年04月27日 22時10分 (#2589848) 日記

    私もusing namespaceはあまり好きではないです。
    std::を省略しない(using namespaceしない)コーディング規約を採用しているライブラリもありますし。
    しかしまあ、std名前空間の識別子は準予約語と割り切ってusing namespaceします。

  • > std::map >::const_iterator it;

    これは、 「std::map >」の部分は複数箇所に登場するでしょうし、データ型はその変数の本質ではないでしょうから、typedefにしますね。
    もしstd::multimapに変えたくなったとしても、typdefを変えるだけですみますし。

    #mapの場合はあまり多いないですけど、std::list で作ったものをあとでstd::vectorに変えたりとかその逆はたまにあります。

    そういう融通がきく(データ型に依存しないようメソッドが用意されてる)ところがSTLのいいところだと思います。

  • by Anonymous Coward on 2014年04月27日 14時48分 (#2589693)

    使ったらいいんじゃないですか?

    • by tamanegi (38323) on 2014年04月27日 15時21分 (#2589706) 日記

      c++11が使えない環境…。orz

      親コメント
    • by minet (45149) on 2014年04月27日 22時28分 (#2589854) 日記

      どうもその手のヒトは、autoを使ったら使ったで「型は明示しろ」と言ってきそうな悪寒がします……

      「人間が長い型指定をすると間違いを引き起こしやすい」という工学に基づいたうえでタイプ量の削減を主張している人なら、喜んでautoを使ってくれるでしょうが…

      親コメント
      • by Anonymous Coward

        「間違えたらコンパイラが指摘してくれる」
        「コンパイラが自動的に推論してくれるものをなぜ人間様がわざわざ入れてやらなければならんのだ」

typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...