「STL」を含む日記 RSS

はてなキーワード: STLとは

2010-08-06

http://anond.hatelabo.jp/20100806111220

QだからQtだとおもうけど、というのは置いておいて

STLと比べてプロセッサにかなり踏み込んだ部分まで最適化されてあるから滅茶苦茶速いはずだよ。

世界にはまだまだ、non Intelベースプロセッサなんていくらでもあるしorz

だいいち、だったから完全互換にしてくれ

includeパスを切り替えれば切り替わるというのが、最高

STLベースプログラムと、オープンソースの独自プログラムQTベースプログラムの橋渡しとか無駄すぎる。orz

歴史的経緯なんだろうが、おまえら、もうちょっと、連携しろと

http://anond.hatelabo.jp/20100806110841

QSetやQVectorって確かintel提供するSTLシグネチャ互換テンプレートライブラリじゃなかったっけ?

アレは処理系から提供されてるSTLと比べてプロセッサにかなり踏み込んだ部分まで最適化されてあるから滅茶苦茶速いはずだよ。

うろ覚えだけど。

なんで・・・どいつもこいつもStringクラスとかを独自で作るんだ?STLにあるものは、STLのを使えよSTLのを・・・

複数のオープンソースとかをまたいでアプリ作るときにStringの載せ替えでメモリコピーが発生とか、泣きたくなる。

とか言うのは有りですか?

2010-07-28

http://anond.hatelabo.jp/20100728222811

JAVAで書いてもいいが、システムが巨大という意味にはJavaVMの移植とかLinuxカーネルパッチという意味まで含まれているので

CだろうとC++だろうと使うことになるのは変わらんし

今時、list なんぞ を1から手書きするくらいならSTLリスト使ってメモリアロケーターだけ書き換えるわw

http://anond.hatelabo.jp/20100728222245

マルチスレッドタイミング問題とか シグナルの問題とか

高負荷になるとカーネルコールから特殊なエラーが帰ってくるとか

単体じゃ出ない問題もあるし

人が違う、会社が違うっていうところから来る意識違いとか、結構テストしてもでるし。 結合のデバッグはなくならんよ。

あとは、引き継いで、数年後に違う人が改造するとかのときに、

あまりにも、STLガツガツだよ改造しにくい時があるんだよ。

数年後の改造って、当初の設計になかった追加機能だから、設計上できなくて結構改造ってときに

ベタベタに書いてあるか、STLガツガツに書いてあるかとか結構違ってくるしね。

 

メソッドが細かすぎるとコールスタックが深くなりすぎて、それはそれで追っかけにくいというのもある。

時間が経つと、書いた人がもういないとか、よくあるしね。

そういう時に、改造しやすくデバッグしやすく行儀よく書いてあるとすげー助かる。

 

最近は、年取ったのもあって、難しい部分は

自分が書いて、若い人にパスする。ってケースも増えてきて

そういう時は、ベタにかけるときはベタに書くようにしてる。

http://anond.hatelabo.jp/20100728215904

それがSTLの本来の使い方。

変数宣言すると名前覚えたりするの面倒なんだよ。そっちの方が楽だし、OCamlやFSharpみたいな関数型言語に慣れたら一時変数苦痛でしかない。

2010-07-26

勘弁してほしい時~勘弁してほしい時~

 

STLvectorは重いというから、調べてみたらSTLが古くてiteratorの実装がクラスだったとき~とき~

 

STLvectorは重いというから、調べてみたら、大きなvectorに対してeraseを使っていたとき~とき~

 

STLvectorは重いというから、調べてみたら、メモリが足りなくなったら2倍でreservするという実装だが初期値が小さくて、実際に使うのが大きな数だっとき~とき~

 

どうでもいいけどvec.reserve(strlen(hogehoge))のあとにstrcpyがあったときー

2010-02-22

http://d.hatena.ne.jp/faith_and_brave/20100220/1266673222

C++0x 読んだが ダメっぽいな。

まず第一にエンタープライズでの開発が考慮されていない。エンタープライズの開発だと100人200人 マスタークラスから ジュニアーまで様々なレベル開発者が携わる。

その中で重要になってくるのは可読性。

はっきり言って、歴史的な可読性を犠牲にして効率が上がるならともかく、気持ちの問題程度の効率では意味がない。

第2に

スレッドファイバーの違いぐらいわかれ、わざわざスレッド起こしたらコンテキストスイッチにどれだけコスト食うんだよ。

関数コールするとレジスタとかが、スタックPUSHされるんだよってわからん奴が、IF書くなと同じで、スレッドってコンテキストスイッチの塊なんだよってのがわかんないのに下手にスレッド書かせるな。

3にラムダ式・・・いらん・・・必要なのは曲芸じゃない、可読性。可読性を犠牲にして早くなるならともかく・・・

4にforeachではlastを変数に取るな。途中でReallocしたり、eraseしたりしたときに余計なバグを生んで面倒だ。レビューの時も邪魔。速度?速度が必要な背景でSTLVector使うな。配列使うかポインタ使え。

なんつーか、トータルで見て、次はC++と各種OpenCLとかGLとかのライブラリの集合だな。C++0xはまともに使う人もいなさそう。正規表現とかもライブラリ使えば良いし、そもそもC系列ならBisonとかLRとかだろうと。C系列の使い手ならBNFを使え。正規表現使いたければそれこそ、Perl使え。

2009-08-17

C++ STLvectorコンテナのsize()関数

醜悪なことにこいつの返り値はintではなくunsigned intのようだ。

従って、サイズ0のvectorに対して

vec.size()-1

という演算をすると結果は-1ではなく、オーバーフローしてunsigned intの最大値になる。

サイズがゼロだったら-1になるだろjkとか思ってコーディングすると酷い目にあう。

2008-08-25

http://anond.hatelabo.jp/20080825010326

javaとかさっぱわかんないペーペーですけど

>ListやMapループで回して値を取る時Iterator使うのは何故?

それはね、Javaにはポインタがないからなんだよ。

ポインタのあるC++でもSTLではIteratorを使うわけで、

もちろんjavaの場合はポインタの代用という側面はあるにしても、

アルゴリズムの型依存性を無くす目的もあるんじゃないかなーと思うんですが…。

2008-06-27

[][][]文字列char*をキーにするのなら、気をつけたいこと

http://www.sgi.com/tech/stl/Map.html

stlmapクラスtree継承してるようなしてないような。

それはともかく、文字列をキーにしている場合、文字列を比較するための処理を定義してやらないといけない。

map<char*, object*, COMPARE> hogehoge;

もし、

map<char*, object*> hogehoge;

としてしまうと、キーは文字列ではなく、文字列アドレスになってしまう。

、、、string使えばいいのか。

2008-06-26

http://anond.hatelabo.jp/20080626231143

コード書き始めて1ヶ月強ですが、なかなかC++仕様が把握できません。

今日はポリモーフィッククラスの扱いがよくわからなくてハマッったりしました。

抽象クラスポインタをnewしようとしてました)

あとSTLmapコンテナがイマイチわからず困ってます。

書いたコードは2,3000行くらい。図形処理のアルゴリズムが難しくて相当苦しみました(まだ未完成)。

テストケースをあまりきちんと洗い出してないからこれから困ると思います。

OOP的に正しい設計とか未だによくわからないし…(設計始めたのはさらに1ヶ月前くらい)。

ギークとまではいかないにしても、何とかして「そっち側」に行きたいのです。

スキルを身につけるという意味では、実際どのくらいのタイムスパンを見込むべきでしょうか。

とか、終わってもいないのに増田に書いちゃう集中力のなさも問題です。

2008-06-18

おおお

C++STLvectorを使ってランダムリスト構造を作ることに成功した。

vectoriteratorへのポインタを持たせれば良かったようだ。

助かった。

ちなみに下の議論?に参加してた増田だ。

集中力が無くて困る。詰まるとすぐ集中できなくなる。何かいい方法はないだろうか。

いやいやまてよiteratorsetしてからinsertとかするとiteratorが無効になるだろう。

やっぱり駄目か…。今のうちに損をとってmapコンテナあたりに書き換えるべきか…orz

2008-06-10

諸君、私はC++が好きだ

諸君、私はC++が好きだ

諸君、私はC++が好きだ

諸君、私はC++が大好きだ

演算子オーバーロードが好きだ

テンプレートが好きだ

STLが好きだ

Boostが好きだ

FC++が好きだ

Windows

Mac

Linux

BSD

Solaris

この地上でコンパイルされるありとあらゆるC++が大好きだ

演算子を多重定義できるC++が好きだ

演算子意味が変わり、直感的なコードが書き下せる時など心がおどる

テンプレートが使えるC++が好きだ

動的言語の優位性を語っている奴等にそれを見せた時など胸がすくような気持ちだった

Boostが好きだ

Boost::lambdaを使って(_1 + _2)と二つの引数を足算した結果を返す無名関数を定義した時など感動すらおぼえる

Boost::regex正規表現を書く時などもうたまらない

Boost::shared_pointerでオブジェクト自動的に解放されるのは最高だ

納期に追われて急いで書かなければならないパーサを

Boost::spiritBNF記述して書いた時など絶頂すら覚える

マルチパラダイムC++が好きだ

そんなC++が複雑だと思われているのはとてもとても悲しいものだ

テンプレートが好きだ

エラーメッセージ意味不明だと言われるのは屈辱の極みだ

諸君 私はC++を 変態の様なC++を望んでいる

諸君 私に付き従うC++好きの諸君 君たちは一体何を望んでいる?

更なるC++を望むか 

糞の様なC++を望むか?

BoostFC++によってさらに変態的になっていくC++を望むか?

C++!! C++!! C++!!

よろしい ならばC++

だが、LL全盛の時代の陰でもはや組み込みHPCぐらいでしか使われないという中傷に耐え続けて来た我々には

ただのC++ではもはや足りない!!

C++を!! 一心不乱の大C++を!!

我々はわずかに小数

PerlPHPPythonRubyJavaScriptに比べれば物の数ではない

だが諸君は一騎当千のBinarianだと私は信じている

ならば我らは諸君と私で総兵力100万と1人のコンピュータサイエンティスト集団となる

我らを忘却の彼方へと追いやり、インタプリタしか知らない連中を叩きのめそう

髪の毛をつかんで引きずり下ろし 眼(まなこ)をあけて思い出させよう

連中コンパイラの偉大さを思い出させてやる

連中インタプリタでは実用的なプログラムが書けないということを思い出させてやる

C++には奴らの哲学では思いもよらない書き方がある事を思い出させてやる

1000人のBinarianの集団で 世界変態的なコードで埋め尽くしてやる

目標 世界のありとあらゆるプログラム

一億総合コンパイル作戦 状況を開始せよ

逝くぞ 諸君


http://wids.net/lab/sukida.htmlで生成。

2008-04-22

http://anond.hatelabo.jp/20080422073509

で、市民革命ギリシャ思想必然的な関係とやらを見せてほしいのだが。俺が思うに、過去伝統の影響を過剰に持ち上げるのは当時暗中模索でことを進めていった人たちに失礼だと思うんだけどね。

うーん、まあそういう意見はそれでもいいよ。でも日本でそれを主張することが、あまつさえ天皇とか引き合いに出すことが、どんだけ危険なのか、ってことくらいは自覚して欲しいな。

ディベートネタに使っていいような話題じゃねーぞ。アホにでしゃばる隙を与えないためにも。

で、ほんとに蛇足なんだけどなんだかなあ。

言外の常識レベルで「必要」なんですが。普通現場では。

だから、あなたの言っている「普通現場」が別に「普通」じゃないと言ってるわけですが。あなたの挙げた例で言うと「携帯ゲーム機プログラマーみたいな仕事」を「普通」の範疇に入れないのはなぜ?

携帯ゲーム機プログラミングアセンブラもどきのC言語が使われるのは、CPUメモリも貧弱でC++コストが高くつくからだ。必然性がある。あと、携帯ゲーム機プログラムは一人でもやれる規模だし、誰かのソースを引き継いでサポート、みたいなこともあまりないからな。

10年前ならともかく、今だとゲームでも、普通ゲーム機や特にパソコンゲームだと、さすがにほとんどがC++で開発されてるんじゃないかな。

業務用アプリ作ろうってのならともかく(まあ、オブジェクト指向を使う目的普通はそっちだが)、そうじゃない人間にとってはややこしいライブラリの癖をあれこれ覚える必要はないわけで。

そんなお遊びプログラムの話をされてもー。

ていうか、STLとか標準的なライブラリの使い方は、もう癖というレベルじゃなく、標準語として覚えるべきだと思うが。

君の仕事を引き継ぐプログラマに、君オリジナルライブラリの癖に適応する手間を掛けさせるよりは、標準的なものに準拠しておいたほうがいいよね。

http://anond.hatelabo.jp/20080421224209

情報工学」全般の話をしているのに企業社会だけを想定する必要などなかろう。大雑把な言い方をすれば、大規模情報システムだけがITの全てではないということだ。

そりゃ携帯ゲーム機プログラマーみたいな仕事もあるから、そういうのでアセンブラもどきのCソースが出てきてもおかしいとは言わないけど、一般の感覚としてはちょっと外れてると俺は思う。

だいたい、Cやアセンブラが使える人間JavaやらC++を覚えて標準的な書法で書くことは、好き嫌いはともかく本質的には難しいことではないわけで。道具の使い方を覚えるということに対して「必要があればやるけれど、必要がなければやらない」というのは非常に当たり前の立場だと思うがね。

言外の常識レベルで「必要」なんですが。普通現場では。

あと、C++Javaはちゃんとやろうとするとむしろアセンブラよかずっと難しい(というか「ややこしい」)ので、そう舐めてかかるのはいかがか。

どっちでもいいよ。だいいち、数値解析の専門家C++で書いたコード普通の数値実験屋がCで書いたコードの性能の比較なんて問題は非常に枝葉末節じゃないか?そもそも、「普通の数値実験屋」がどういう奴かという範囲の取り方でいくらでも恣意的な結論が出てくる話だから、議論して実になるとも思えない。

やー、C++をいまだに重い重い言う人が多いからなあ。確かに枝葉末節なんだが、スルーしきれない。

そりゃ数値計算ではFORTRANに負ける部分が確かにまだあるが、Cと比べてなら、そこまで酷いってことはないはずなんだがね。

CでSTLよりも高速なコレクション処理を書ける人にはそういうことを言う権利があるいはあるのかもしれんが、俺はそれでもSTL使えって言うね。後々を考えて。

俺も論旨を混乱させた責任はあるが、そもそも話がずれすぎている。俺が言っているのは、「速いコードを書くことが理論的に可能かどうか」ではなく、「速いコードを書くために本人が持っているべき素養」の話をしているわけで。

うーん、個人的には、自力でアセンブラレベルからコレクション処理を書き起こすなんてばかげてると思うけどね。

明治維新だって王政復古を唱えていたが、どう考えてもあの政体は西洋からの輸入品でしょ。

明治維新って、薩摩幕府天皇にかこつけて喧嘩してただけだろ、民主主義とあんまり関係ない。

2008-04-18

http://anond.hatelabo.jp/20080418014735

Javaでは、Arrays.sort(Object[] a, Comparator c) やCollections.sort(List list, Comparator c)

のCompatarorを自分で「・・・・ソート」に実装しろ、でいいはずなんです。

(aやlistの要素がcomparableを実装してないと使えませんが・・・。)

C++ではSTLを使えば出来るそうですが、こっちの方が簡潔に書けると思います。

ソート方法はクイックソートが一番実用的で、sortではComparatorを指定しない限り

デフォルトクイックソートを使うのでComparatorを意識する事はあまりないんですけどね。

http://anond.hatelabo.jp/20080418014735

そのC++の授業は、コード開発能力を高めるためというよりも、アルゴリズム学習に主眼をおいてるのではないかな?

ソート方法を例にとると、そのアルゴリズムを学ぶことが重要なわけで、Javaだと1行で済んでしまい、意味が無い。

小手先だけの技術を学ぶのではなく、本質を学ぶ主旨だと思う。

あ、あと、C++にもSTLなどのライブラリがあるから、極めればC++の方が楽になるぞ。

2007-05-02

プログラミング言語ヒエラルキーにおける罵倒

http://www.geekpage.jp/blog/?id=2006/12/13

プログラミング言語ヒエラルキーにおいて、上位が下位に対してどう見下してるのかを書いてみた。詳しくない言語も無理して調べながら書いてある。あと、言語に理解の無い人みたいで生々しいかと思って、刺激的かつあまり真っ当でない内容ばっかにしてみたよ!((FORTRAN から Java に「GO TO も実装されてないんですか?」とかそういう、馬鹿にすることを目的とした偏狭で的外れな発言ってことだよ!))((ここにある中では、C# に多重継承が無いことを馬鹿にする C++ プログラマーが真っ当でない指摘のわかりやすい例かな))

みんなが普段どういう不当な見下しをしてるかも教えてね!

Lisp → C

「いつまで経っても言語仕様が貧弱で大変ですね」

アセンブラ → C

「結局アセンブラ翻訳してるだけじゃん」

C → C++

C++ の難解な仕様と戦うぐらいなら C で関数ポインタを使ったオブジェクト指向の方がスマートだね」

STL は糞」

C++C#

中途半端ポインタを隠蔽して何がしたいの?」

「多重継承したくなったらどうするの?」

C → Perl

CPAN 見たって C でコア部分を書いてるライブラリばっかじゃん」

「なんでわざわざ use strict なんて書かなきゃいけないの」

PerlPython

Python って明示的に object継承した場合としなかった場合で挙動が違うって本当なの?」

「インデントブロック(笑)

Python → OO PHP

ライブラリ環境が全然整備されてなくて最悪じゃん。C や C++ で書かれたライブラリをラップしてるだけのはずなのに機能が減りまくってるのも多いし」

OO PHPPHP

ベタ書きしてて楽しい?」

PHPAjax

ウェブブラウザでしか動かないプログラム書いてて楽しい?」

AjaxJavaScript

「簡単な処理をコピペで実装してるだけだね」

JavaScriptVisual Basic

As とか書いてて混乱しない?」

C# があるのにまだ使ってるんだ」

FORTRANCOBOL

「冗長でわかりやすいですね(笑)

「DIVISION の概念って本気で言ってるんですか?」

COBOLAda

「航空宇宙産業専用言語でしょ」

「記述がわかりづらいね」

JavaScriptAda

ペンタゴンで使われてるだけじゃん」

「ガベージコレクタが無い……?」(あるらしいです><

AdaPascal

「昔 Apple で使われてただけじゃん」

「Del…phi…?」

PascalJava

コンパイルも実行も遅いらしいけど何に使うんですか?」

JavaHTMLプログラミング言語であると主張する人々

「処理も記述できないのに何言ってるの」

おまけ

マイクロソフト・ジョークス/プログラミング言語が女性なら

ログイン ユーザー登録
ようこそ ゲスト さん